X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Ftypemanager.cs;h=51bc5326bca4c7f3d194f6361fb58dd02eaac46c;hb=5ace7ce140d57c2e441ea2bd66d3a5887d55563f;hp=a897de2689089b9732b55829530cc1eac3e1ae69;hpb=c25d268b63a16a4f31a922d9950d1a94adab92d7;p=mono.git diff --git a/mcs/mcs/typemanager.cs b/mcs/mcs/typemanager.cs index a897de26890..51bc5326bca 100644 --- a/mcs/mcs/typemanager.cs +++ b/mcs/mcs/typemanager.cs @@ -8,7 +8,8 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) -// Copyright 2003-2008 Novell, Inc. +// Copyright 2003-2011 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; @@ -208,6 +209,7 @@ namespace Mono.CSharp public readonly PredefinedType MethodBase; public readonly PredefinedType MethodInfo; public readonly PredefinedType ConstructorInfo; + public readonly PredefinedType MemberBinding; // // C# 4.0 @@ -256,6 +258,7 @@ namespace Mono.CSharp Expression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression"); ExpressionGeneric = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression", 1); + MemberBinding = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "MemberBinding"); 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"); @@ -791,16 +794,6 @@ namespace Mono.CSharp return null; } - if (filter_builder != null) { - var types = filter_builder (); - - if (filter.Kind == MemberKind.Field) - filter = new MemberFilter (filter.Name, filter.Arity, filter.Kind, null, types[0]); - else - filter = new MemberFilter (filter.Name, filter.Arity, filter.Kind, - ParametersCompiled.CreateFullyResolved (types), filter.MemberType); - } - if (filter_builder != null) { filter = new MemberFilter (filter.Name, filter.Arity, filter.Kind, ParametersCompiled.CreateFullyResolved (filter_builder ()), filter.MemberType); @@ -851,43 +844,6 @@ namespace Mono.CSharp { return mb.GetSignatureForError (); } - - // Obsolete - public static bool IsDelegateType (TypeSpec t) - { - return t.IsDelegate; - } - - // Obsolete - public static bool IsEnumType (TypeSpec t) - { - return t.IsEnum; - } - - // - // Whether a type is unmanaged. This is used by the unsafe code (25.2) - // - public static bool IsUnmanagedType (TypeSpec t) - { - var ds = t.MemberDefinition as DeclSpace; - if (ds != null) - return ds.IsUnmanagedType (); - - if (t.Kind == MemberKind.Void) - return true; - - // Someone did the work of checking if the ElementType of t is unmanaged. Let's not repeat it. - if (t.IsPointer) - return IsUnmanagedType (GetElementType (t)); - - if (!TypeSpec.IsValueType (t)) - return false; - - if (t.IsNested && t.DeclaringType.IsGenericOrParentIsGeneric) - return false; - - return true; - } public static bool IsFamilyAccessible (TypeSpec type, TypeSpec parent) { @@ -953,12 +909,12 @@ namespace Mono.CSharp /// public static bool VerifyUnmanaged (ModuleContainer rc, TypeSpec t, Location loc) { - while (t.IsPointer) - t = GetElementType (t); - - if (IsUnmanagedType (t)) + if (t.IsUnmanaged) return true; + while (t.IsPointer) + t = ((ElementTypeSpec) t).Element; + rc.Compiler.Report.SymbolRelatedToPreviousError (t); rc.Compiler.Report.Error (208, loc, "Cannot take the address of, get the size of, or declare a pointer to a managed type `{0}'",