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); } }