public PredefinedTypes (ModuleContainer module)
{
TypedReference = new PredefinedType (module, MemberKind.Struct, "System", "TypedReference");
ArgIterator = new PredefinedType (module, MemberKind.Struct, "System", "ArgIterator");
MarshalByRefObject = new PredefinedType (module, MemberKind.Class, "System", "MarshalByRefObject");
RuntimeHelpers = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "RuntimeHelpers");
IAsyncResult = new PredefinedType (module, MemberKind.Interface, "System", "IAsyncResult");
AsyncCallback = new PredefinedType (module, MemberKind.Delegate, "System", "AsyncCallback");
RuntimeArgumentHandle = new PredefinedType (module, MemberKind.Struct, "System", "RuntimeArgumentHandle");
CharSet = new PredefinedType (module, MemberKind.Enum, "System.Runtime.InteropServices", "CharSet");
IsVolatile = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "IsVolatile");
IEnumeratorGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IEnumerator", 1);
IListGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IList", 1);
ICollectionGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "ICollection", 1);
IEnumerableGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IEnumerable", 1);
Nullable = new PredefinedType (module, MemberKind.Struct, "System", "Nullable", 1);
Activator = new PredefinedType (module, MemberKind.Class, "System", "Activator");
Interlocked = new PredefinedType (module, MemberKind.Class, "System.Threading", "Interlocked");
Monitor = new PredefinedType (module, MemberKind.Class, "System.Threading", "Monitor");
NotSupportedException = new PredefinedType (module, MemberKind.Class, "System", "NotSupportedException");
RuntimeFieldHandle = new PredefinedType (module, MemberKind.Struct, "System", "RuntimeFieldHandle");
RuntimeMethodHandle = new PredefinedType (module, MemberKind.Struct, "System", "RuntimeMethodHandle");
SecurityAction = new PredefinedType (module, MemberKind.Enum, "System.Security.Permissions", "SecurityAction");
Expression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression");
ExpressionGeneric = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression", 1);
ParameterExpression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "ParameterExpression");
FieldInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "FieldInfo");
MethodBase = new PredefinedType (module, MemberKind.Class, "System.Reflection", "MethodBase");
MethodInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "MethodInfo");
ConstructorInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "ConstructorInfo");
CallSite = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "CallSite");
CallSiteGeneric = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "CallSite", 1);
Binder = new PredefinedType (module, MemberKind.Class, "Microsoft.CSharp.RuntimeBinder", "Binder");
BinderFlags = new PredefinedType (module, MemberKind.Enum, "Microsoft.CSharp.RuntimeBinder", "CSharpBinderFlags");
//
// Define types which are used for comparison. It does not matter
// if they don't exist as no error report is needed
//
TypedReference.Define ();
ArgIterator.Define ();
MarshalByRefObject.Define ();
CharSet.Define ();
IEnumerableGeneric.Define ();
IListGeneric.Define ();
ICollectionGeneric.Define ();
IEnumerableGeneric.Define ();
IEnumeratorGeneric.Define ();
Nullable.Define ();
ExpressionGeneric.Define ();
// Deal with obsolete static types
// TODO: remove
TypeManager.typed_reference_type = TypedReference.TypeSpec;
TypeManager.arg_iterator_type = ArgIterator.TypeSpec;
TypeManager.mbr_type = MarshalByRefObject.TypeSpec;
TypeManager.generic_ilist_type = IListGeneric.TypeSpec;
TypeManager.generic_icollection_type = ICollectionGeneric.TypeSpec;
TypeManager.generic_ienumerator_type = IEnumeratorGeneric.TypeSpec;
TypeManager.generic_ienumerable_type = IEnumerableGeneric.TypeSpec;
TypeManager.generic_nullable_type = Nullable.TypeSpec;
TypeManager.expression_type = ExpressionGeneric.TypeSpec;
}
}