Esempio n. 1
0
        public void DeferNodesHaveAMonotonicallyIncrementingID()
        {
            var first  = new DeferNode(SourcePosition.NIL, new BlockNode(SourcePosition.NIL));
            var second = new DeferNode(SourcePosition.NIL, new BlockNode(SourcePosition.NIL));
            var third  = new DeferNode(SourcePosition.NIL, new BlockNode(SourcePosition.NIL));

            Assert.AreEqual(second.ID, first.ID + 1);
            Assert.AreEqual(third.ID, second.ID + 1);
        }
Esempio n. 2
0
        public void VisitDefer(DeferNode node)
        {
            UpdateLine(node);
            NewProcedure($"deferred_lambda{node.ID}", false, false, node.Position.Line, false);
            UpdateLine(node);

            node.Code.Accept(this);
            asm.Return();

            var pasm = asm;
            var proc = FinishProcedure();

            Closure(proc);

            asm.Defer();
        }
Esempio n. 3
0
 public DeferNodeTests()
 {
     code    = new BlockNode(SourcePosition.NIL);
     subject = new DeferNode(SourcePosition.NIL, code);
 }
Esempio n. 4
0
 public void VisitDefer(DeferNode node)
 {
     VisitDeferHandler(node);
 }