Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }