示例#1
0
        internal override IEnumerable <NamespaceOrTypeBuilder> TypeOrNamespaceBuilders(NamespaceOrTypeSymbol current)
        {
            BinderContext         next;   // push diagnostics to the top level
            NamespaceOrTypeSymbol merged; // lookup in a merged context

            if (this is TopLevelBuilder1)
            {
                next   = this;
                merged = Compilation.GlobalNamespace;
            }
            else
            {
                next   = this.Next;
                merged = (next as InContainerBinderContext).Container.GetMembers(current.Name).OfType <Symbol, NamespaceSymbol>().Single();
            }

            BinderContext bodyContext = new InContainerBinderContext(declaration, merged, next);

            foreach (var d in declaration.SingleChildren)
            {
                yield return(d.Kind == DeclarationKind.Namespace
                  ? (NamespaceOrTypeBuilder) new NamespaceBuilder1(current, d, bodyContext)
                  : (NamespaceOrTypeBuilder) new NamedTypeBuilder(current, d, bodyContext));
            }
        }
        internal override IEnumerable<NamespaceOrTypeBuilder> TypeOrNamespaceBuilders(NamespaceOrTypeSymbol current)
        {
            BinderContext next; // push diagnostics to the top level
            NamespaceOrTypeSymbol merged; // lookup in a merged context
            if (this is TopLevelBuilder1)
            {
                next = this;
                merged = Compilation.GlobalNamespace;
            }
            else
            {
                next = this.Next;
                merged = (next as InContainerBinderContext).Container.GetMembers(current.Name).OfType<Symbol, NamespaceSymbol>().Single();
            }

            BinderContext bodyContext = new InContainerBinderContext(declaration, merged, next);
            foreach (var d in declaration.SingleChildren)
            {
              yield return d.Kind == DeclarationKind.Namespace
                  ? (NamespaceOrTypeBuilder)new NamespaceBuilder1(current, d, bodyContext)
                  : (NamespaceOrTypeBuilder)new NamedTypeBuilder(current, d, bodyContext);
            }
        }