private static IReadOnlyCollection <IntermediateCode> Generate(ICodeUnit unit) { var sut = new IntermediateCodeGenerator(); var actual = sut.Generate(unit); var namer = new ImplicitReferenceNameAssigner(); namer.AssignNames(unit); return(actual.ToList().AsReadOnly()); }
private static void AssertScope(ICodeUnit expressionNode, SymbolTable expectedScope) { var sut = new ScopeScanner(); var nameAssigner = new ImplicitReferenceNameAssigner(); nameAssigner.AssignNames(expressionNode); expressionNode.Accept(sut); var actual = sut.SymbolTable; actual.WithDeepEqual(expectedScope) .IgnoreProperty(r => r.Name == "Parent") .Assert(); }
private static void GiveNameToImplicitReferences(ICodeUnit ast) { var nameAssigner = new ImplicitReferenceNameAssigner(); nameAssigner.AssignNames(ast); }