// // Creates alias global namespace // public RootNamespace CreateRootNamespace (string alias) { if (alias == global_ns.Alias) { RootNamespace.Error_GlobalNamespaceRedefined (Report, Location.Null); return global_ns; } RootNamespace rn; if (!alias_ns.TryGetValue (alias, out rn)) { rn = new RootNamespace (alias); alias_ns.Add (alias, rn); } return rn; }
/// <summary> /// Constructor Takes the current namespace and the /// name. This is bootstrapped with parent == null /// and name = "" /// </summary> public Namespace (Namespace parent, string name) { // Expression members. this.eclass = ExprClass.Namespace; this.Type = InternalType.Namespace; this.loc = Location.Null; this.parent = parent; if (parent != null) this.root = parent.root; else this.root = this as RootNamespace; if (this.root == null) throw new InternalErrorException ("Root namespaces must be created using RootNamespace"); string pname = parent != null ? parent.fullname : ""; if (pname == "") fullname = name; else fullname = parent.fullname + "." + name; if (fullname == null) throw new InternalErrorException ("Namespace has a null fullname"); if (parent != null && parent.MemberName != MemberName.Null) MemberName = new MemberName (parent.MemberName, name, Location.Null); else if (name.Length == 0) MemberName = MemberName.Null; else MemberName = new MemberName (name, Location.Null); namespaces = new Dictionary<string, Namespace> (); cached_types = new Dictionary<string, TypeExpr> (); root.RegisterNamespace (this); }
public ModuleContainer (CompilerContext context) : base (null, MemberName.Null, null, 0) { this.context = context; caching_flags &= ~(Flags.Obsolete_Undetected | Flags.Excluded_Undetected); containers = new List<TypeContainer> (); anonymous_types = new Dictionary<int, List<AnonymousTypeClass>> (); global_ns = new GlobalRootNamespace (); alias_ns = new Dictionary<string, RootNamespace> (); array_types = new Dictionary<ArrayContainer.TypeRankPair, ArrayContainer> (); pointer_types = new Dictionary<TypeSpec, PointerContainer> (); reference_types = new Dictionary<TypeSpec, ReferenceContainer> (); attrs_cache = new Dictionary<TypeSpec, MethodSpec> (); awaiters = new Dictionary<TypeSpec, AwaiterDefinition> (); }