private void BindBaseList(BaseListSyntax baseList, Symbol parent, out ClassOrStructSymbol baseType, out List <InterfaceSymbol> baseInterfaces) { baseType = null; baseInterfaces = new List <InterfaceSymbol>(); if (baseList != null) { var baseTypeTemp = Bind(baseList.BaseType, x => BindType(x, parent)); switch (baseTypeTemp.TypeSymbol.Kind) { case SymbolKind.Class: case SymbolKind.Struct: baseType = (ClassOrStructSymbol)baseTypeTemp.TypeSymbol; break; case SymbolKind.Interface: baseInterfaces.Add((InterfaceSymbol)baseTypeTemp.TypeSymbol); break; } } }
private void BindBaseList(BaseListSyntax baseList, Symbol parent, out ClassOrStructSymbol baseType, out List<InterfaceSymbol> baseInterfaces) { baseType = null; baseInterfaces = new List<InterfaceSymbol>(); if (baseList != null) { var baseTypeTemp = Bind(baseList.BaseType, x => BindType(x, parent)); switch (baseTypeTemp.TypeSymbol.Kind) { case SymbolKind.Class: case SymbolKind.Struct: baseType = (ClassOrStructSymbol) baseTypeTemp.TypeSymbol; break; case SymbolKind.Interface: baseInterfaces.Add((InterfaceSymbol) baseTypeTemp.TypeSymbol); break; } } }
internal ClassSymbol(ClassTypeSyntax syntax, Symbol parent, ClassOrStructSymbol baseType, ImmutableArray<InterfaceSymbol> baseInterfaces, Binder binder) : base(SymbolKind.Class, syntax.Name.Text, parent, baseType, baseInterfaces) { Syntax = syntax; Binder = binder; }
internal StructSymbol(StructTypeSyntax syntax, Symbol parent, ClassOrStructSymbol baseType, ImmutableArray<InterfaceSymbol> baseInterfaces) : base(SymbolKind.Struct, (syntax.Name != null) ? syntax.Name.Text : "<anonymous struct>", parent, baseType, baseInterfaces) { Syntax = syntax; }