///////////////////////////////////////////////////////////////////////////////// public AggregateSymbol CreateAggregate(Name name, NamespaceOrAggregateSymbol parent, InputFile infile, TypeManager typeManager) { if (name == null || parent == null || infile == null || typeManager == null) { throw Error.InternalCompilerError(); } AggregateSymbol sym = null; if (infile.GetAssemblyID() == KAID.kaidUnresolved) { // Unresolved aggs need extra storage. sym = CreateUnresolvedAggregate(name, parent, typeManager); } else { sym = newBasicSym(SYMKIND.SK_AggregateSymbol, name, parent).AsAggregateSymbol(); sym.name = name; sym.SetTypeManager(typeManager); sym.SetSealed(false); sym.SetAccess(ACCESS.ACC_UNKNOWN); sym.initBogus(); sym.SetIfaces(null); sym.SetIfacesAll(null); sym.SetTypeVars(null); } sym.InitFromInfile(infile); return(sym); }
public AggregateSymbol CreateUnresolvedAggregate(Name name, ParentSymbol parent, TypeManager typeManager) { Debug.Assert(name != null); Symbol sym = newBasicSym(SYMKIND.SK_UnresolvedAggregateSymbol, name, parent); AggregateSymbol AggregateSymbol = null; // Unresolved Aggs need extra storage, but are still considered Aggs. sym.setKind(SYMKIND.SK_AggregateSymbol); AggregateSymbol = sym.AsAggregateSymbol(); AggregateSymbol.SetTypeManager(typeManager); Debug.Assert(AggregateSymbol != null); return(AggregateSymbol); }
///////////////////////////////////////////////////////////////////////////////// public AggregateSymbol CreateAggregate(Name name, NamespaceOrAggregateSymbol parent, TypeManager typeManager) { if (name == null || parent == null || typeManager == null) { throw Error.InternalCompilerError(); } AggregateSymbol sym = (AggregateSymbol)newBasicSym(SYMKIND.SK_AggregateSymbol, name, parent); sym.name = name; sym.SetTypeManager(typeManager); sym.SetSealed(false); sym.SetAccess(ACCESS.ACC_UNKNOWN); sym.SetIfaces(null); sym.SetIfacesAll(null); sym.SetTypeVars(null); return(sym); }