private void BuildAs(DAsPattern node, Hints hints, CompilerContext ctx) { cw.Dup(); BuildPattern(node.Pattern, hints, ctx); var bad = cw.DefineLabel(); var ok = cw.DefineLabel(); cw.Brfalse(bad); var sva = -1; if (!TryGetLocalVariable(node.Name, out var sv)) { sva = AddVariable(node.Name, node, VarFlags.None); } else { sva = sv.Address; } cw.PopVar(sva); cw.Push(true); cw.Br(ok); cw.MarkLabel(bad); cw.Pop(); cw.Push(false); cw.MarkLabel(ok); cw.Nop(); }
private void PreinitAs(DAsPattern node, Hints hints) { PreinitPattern(node.Pattern, hints); var sva = -1; if (!TryGetLocalVariable(node.Name, out var sv)) { sva = AddVariable(node.Name, node, VarFlags.None); } else { sva = sv.Address; } cw.PushNil(); cw.PopVar(sva); }