private NamespaceOrTypeSymbol BuildSymbol(MergedNamespaceOrTypeDeclaration declaration, DiagnosticBag diagnostics) { switch (declaration.Kind) { case DeclarationKind.Namespace: return(new SourceNamespaceSymbol(_module, this, (MergedNamespaceDeclaration)declaration, diagnostics)); #region Package Template - BuildSymbol case DeclarationKind.Template: return(new TemplateSymbol(this, (MergedTemplateDeclaration)declaration)); #endregion case DeclarationKind.Struct: case DeclarationKind.Interface: case DeclarationKind.Enum: case DeclarationKind.Delegate: case DeclarationKind.Class: return(new SourceNamedTypeSymbol(this, (MergedTypeDeclaration)declaration, diagnostics)); case DeclarationKind.Script: case DeclarationKind.Submission: case DeclarationKind.ImplicitClass: return(new ImplicitNamedTypeSymbol(this, (MergedTypeDeclaration)declaration, diagnostics)); default: throw ExceptionUtilities.UnexpectedValue(declaration.Kind); } }
private NamespaceOrTypeSymbol BuildSymbol(MergedNamespaceOrTypeDeclaration declaration, DiagnosticBag diagnostics) { switch (declaration.Kind) { case DeclarationKind.Template: return(new TemplateSymbol(this, (MergedTemplateDeclaration)declaration)); case DeclarationKind.Class: return(new SourceNamedTypeSymbol(this, (MergedTypeDeclaration)declaration, diagnostics)); default: throw ExceptionUtilities.UnexpectedValue(declaration.Kind); } }
internal static NamespaceOrTypeSymbol BuildSymbol( this MergedNamespaceOrTypeDeclaration declaration, NamespaceOrTypeSymbol parent, DiagnosticBag diagnostics) { if (declaration is MergedNamespaceDeclaration) { return(BuildSymbol((MergedNamespaceDeclaration)declaration, parent, diagnostics)); } else if (declaration is MergedTypeDeclaration) { return(BuildSymbol((MergedTypeDeclaration)declaration, parent, diagnostics)); } else { throw new InvalidOperationException(); } }
private Dictionary <string, ImmutableArray <NamespaceOrTypeSymbol> > MakeNameToMembersMap(DiagnosticBag diagnostics) { var builder = new NameToSymbolMapBuilder(_declaration.Children.Length); foreach (var declaration in _declaration.Children) { MergedNamespaceOrTypeDeclaration mergedDeclaration = null; if (declaration is SingleTypeDeclaration typeDeclaration) { mergedDeclaration = new MergedTypeDeclaration(ImmutableArray.Create((SingleTypeDeclaration)declaration)); } if (mergedDeclaration != null) { builder.Add(BuildSymbol(mergedDeclaration, diagnostics)); } else { throw ExceptionUtilities.UnexpectedValue(declaration.Kind); } } return(builder.CreateMap()); }
private NamespaceOrTypeSymbol BuildSymbol(MergedNamespaceOrTypeDeclaration declaration, DiagnosticBag diagnostics) { switch (declaration.Kind) { case DeclarationKind.Namespace: return new SourceNamespaceSymbol(_module, this, (MergedNamespaceDeclaration)declaration); case DeclarationKind.Struct: case DeclarationKind.Interface: case DeclarationKind.Enum: case DeclarationKind.Delegate: case DeclarationKind.Class: return new SourceNamedTypeSymbol(this, (MergedTypeDeclaration)declaration, diagnostics); case DeclarationKind.Script: case DeclarationKind.Submission: case DeclarationKind.ImplicitClass: return new ImplicitNamedTypeSymbol(this, (MergedTypeDeclaration)declaration, diagnostics); default: throw ExceptionUtilities.UnexpectedValue(declaration.Kind); } }