public void NamespaceProvided_SetsNamespace() { // Arrange var document = new DocumentBuilder().Build(); var binderProvider = Substitute.For <IBinderProvider>(); var binder = new NamespaceBinder(binderProvider); var namespaceStatement = ParserInput .FromString("namespace * Thrift.Net.Examples") .ParseInput(parser => parser.namespaceStatement()); // Act var @namespace = binder.Bind <Namespace>(namespaceStatement, document); // Assert Assert.Equal("Thrift.Net.Examples", @namespace.NamespaceName); }
public void ScopeNotProvided_Null() { // Arrange var document = new DocumentBuilder().Build(); var binderProvider = Substitute.For <IBinderProvider>(); var binder = new NamespaceBinder(binderProvider); var namespaceStatement = ParserInput .FromString("namespace Thrift.Net.Examples") .ParseInput(parser => parser.namespaceStatement()); // Act var @namespace = binder.Bind <Namespace>(namespaceStatement, document); // Assert Assert.Null(@namespace.Scope); }
public List <ProcedureCompilation>?Compile(S.NamespaceDeclaration declaration, out IEnumerable <DiagnosticInfo> diagnostics) { var binder = new NamespaceBinder(declaration); binder.Explore(); var bound = binder.Bind(); binder.CollectDiagnostics(); diagnostics = binder.Diagnostics; if (binder.HasErrors) { return(null); } var procedures = CompileDeclaration(bound).ToList(); foreach (var constant in Transformer.ConstantTable) { RegisterConstant(constant); } return(procedures.ToList()); }