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); }
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(); }
public DeferNodeTests() { code = new BlockNode(SourcePosition.NIL); subject = new DeferNode(SourcePosition.NIL, code); }
public void VisitDefer(DeferNode node) { VisitDeferHandler(node); }