Пример #1
0
        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);
        }
Пример #2
0
        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());
        }