-
-
- /// <summary>
- /// Resolves the core types in the compiler when compiling with --nostdlib
- /// </summary>
- static public void ResolveCore ()
- {
- TypeContainer root = Tree.Types;
-
- TypeManager.object_type = BootstrapCorlib_ResolveClass (root, "System.Object");
- TypeManager.value_type = BootstrapCorlib_ResolveClass (root, "System.ValueType");
- TypeManager.attribute_type = BootstrapCorlib_ResolveClass (root, "System.Attribute");
-
- string [] interfaces_first_stage = {
- "System.IComparable", "System.ICloneable",
- "System.IConvertible",
-
- "System.Collections.IEnumerable",
- "System.Collections.ICollection",
- "System.Collections.IEnumerator",
- "System.Collections.IList",
- "System.IAsyncResult",
- "System.IDisposable",
-
- "System.Runtime.Serialization.ISerializable",
-
- "System.Reflection.IReflect",
- "System.Reflection.ICustomAttributeProvider"
- };
-
- foreach (string iname in interfaces_first_stage)
- BootstrapCorlib_ResolveInterface (root, iname);
-
- //
- // These are the base value types
- //
- string [] structs_first_stage = {
- "System.Byte", "System.SByte",
- "System.Int16", "System.UInt16",
- "System.Int32", "System.UInt32",
- "System.Int64", "System.UInt64",
- };
-
- foreach (string cname in structs_first_stage)
- BootstrapCorlib_ResolveStruct (root, cname);
-
- //
- // Now, we can load the enumerations, after this point,
- // we can use enums.
- //
- TypeManager.InitEnumUnderlyingTypes ();
-
- string [] structs_second_stage = {
- "System.Single", "System.Double",
- "System.Char", "System.Boolean",
- "System.Decimal", "System.Void",
- "System.RuntimeFieldHandle",
- "System.RuntimeArgumentHandle",
- "System.RuntimeTypeHandle",
- "System.IntPtr",
- "System.TypedReference",
- "System.ArgIterator"
- };
-
- foreach (string cname in structs_second_stage)
- BootstrapCorlib_ResolveStruct (root, cname);
-
- //
- // These are classes that depends on the core interfaces
- //
- string [] classes_second_stage = {
- "System.Reflection.MemberInfo",
- "System.Type",
- "System.Exception",
-
- //
- // These are not really important in the order, but they
- // are used by the compiler later on (typemanager/CoreLookupType-d)
- //
- "System.Runtime.CompilerServices.RuntimeHelpers",
- "System.Reflection.DefaultMemberAttribute",
- "System.Threading.Monitor",
-
- "System.AttributeUsageAttribute",
- "System.Runtime.InteropServices.DllImportAttribute",
- "System.Runtime.CompilerServices.MethodImplAttribute",
- "System.Runtime.InteropServices.MarshalAsAttribute",
- "System.Diagnostics.ConditionalAttribute",
- "System.ObsoleteAttribute",
- "System.ParamArrayAttribute",
- "System.CLSCompliantAttribute",
- "System.Security.UnverifiableCodeAttribute",
- "System.Runtime.CompilerServices.IndexerNameAttribute",
- "System.Runtime.InteropServices.InAttribute",
- "System.Runtime.InteropServices.StructLayoutAttribute",
- "System.Runtime.InteropServices.FieldOffsetAttribute",
- "System.InvalidOperationException",
- "System.NotSupportedException",
- "System.MarshalByRefObject"
- };
-
- // We must store them here before calling BootstrapCorlib_ResolveDelegate.
- TypeManager.string_type = BootstrapCorlib_ResolveClass (root, "System.String");
- TypeManager.enum_type = BootstrapCorlib_ResolveClass (root, "System.Enum");
- TypeManager.array_type = BootstrapCorlib_ResolveClass (root, "System.Array");
- TypeManager.multicast_delegate_type = BootstrapCorlib_ResolveClass (root, "System.MulticastDelegate");
- TypeManager.delegate_type = BootstrapCorlib_ResolveClass (root, "System.Delegate");
-
- foreach (string cname in classes_second_stage)
- BootstrapCorlib_ResolveClass (root, cname);