Author: martin
Date: 2006-09-19 09:33:32 -0400 (Tue, 19 Sep 2006)
New Revision: 65638

Modified:
   trunk/mcs/gmcs/ChangeLog
   trunk/mcs/gmcs/generic.cs
   trunk/mcs/mcs/ChangeLog
   trunk/mcs/mcs/ecore.cs
   trunk/mcs/mcs/typemanager.cs
Log:
2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>

        * typemanager.cs
        (TypeManager.IsEqual): Moved the gmcs implementation here.
        (TypeManager.DropGenericTypeArguments): Likewise.
        (TypeManager.DropGenericMethodArguments): Likewise.
        (TypeManager.GetTypeArguments): Moved here from gmcs.
        (TypeManager.HasGenericArguments): Likewise.



Modified: trunk/mcs/gmcs/ChangeLog
===================================================================
--- trunk/mcs/gmcs/ChangeLog    2006-09-19 13:26:36 UTC (rev 65637)
+++ trunk/mcs/gmcs/ChangeLog    2006-09-19 13:33:32 UTC (rev 65638)
@@ -1,5 +1,14 @@
 2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>
 
+       * generic.cs
+       (TypeManager.IsEqual): Moved into ../mcs/typemanager.cs.
+       (TypeManager.DropGenericTypeArguments): Likewise.
+       (TypeManager.DropGenericMethodArguments): Likewise.
+       (TypeManager.GetTypeArguments): Likewise.
+       (TypeManager.HasGenericArguments): Likewise.
+
+2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>
+
        * ecore.cs (PropertyExpr.InstanceResolve): Fix the CS1540 check.
 
 2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>

Modified: trunk/mcs/gmcs/generic.cs
===================================================================
--- trunk/mcs/gmcs/generic.cs   2006-09-19 13:26:36 UTC (rev 65637)
+++ trunk/mcs/gmcs/generic.cs   2006-09-19 13:33:32 UTC (rev 65638)
@@ -2058,67 +2058,6 @@
                        return ReflectionConstraints.GetConstraints (t);
                }
 
-               public static bool HasGenericArguments (Type t)
-               {
-                       return GetNumberOfTypeArguments (t) > 0;
-               }
-
-               public static Type[] GetTypeArguments (Type t)
-               {
-                       DeclSpace tc = LookupDeclSpace (t);
-                       if (tc != null) {
-                               if (!tc.IsGeneric)
-                                       return Type.EmptyTypes;
-
-                               TypeParameter[] tparam = tc.TypeParameters;
-                               Type[] ret = new Type [tparam.Length];
-                               for (int i = 0; i < tparam.Length; i++) {
-                                       ret [i] = tparam [i].Type;
-                                       if (ret [i] == null)
-                                               throw new 
InternalErrorException ();
-                               }
-
-                               return ret;
-                       } else
-                               return t.GetGenericArguments ();
-               }
-
-               public static Type DropGenericTypeArguments (Type t)
-               {
-                       if (!t.IsGenericType)
-                               return t;
-                       // Micro-optimization: a generic typebuilder is always 
a generic type definition
-                       if (t is TypeBuilder)
-                               return t;
-                       return t.GetGenericTypeDefinition ();
-               }
-
-               public static MethodBase DropGenericMethodArguments (MethodBase 
m)
-               {
-                       if (m.IsGenericMethodDefinition)
-                               return m;
-                       if (m.IsGenericMethod)
-                               return ((MethodInfo) 
m).GetGenericMethodDefinition ();
-                       if (!m.DeclaringType.IsGenericType)
-                               return m;
-
-                       Type t = m.DeclaringType.GetGenericTypeDefinition ();
-                       BindingFlags bf = BindingFlags.Public | 
BindingFlags.NonPublic |
-                               BindingFlags.Static | BindingFlags.Instance | 
BindingFlags.DeclaredOnly;
-
-                       if (m is ConstructorInfo) {
-                               foreach (ConstructorInfo c in t.GetConstructors 
(bf))
-                                       if (c.MetadataToken == m.MetadataToken)
-                                               return c;
-                       } else {
-                               foreach (MethodBase mb in t.GetMethods (bf))
-                                       if (mb.MetadataToken == m.MetadataToken)
-                                               return mb;
-                       }
-
-                       return m;
-               }
-
                public static FieldInfo GetGenericFieldDefinition (FieldInfo fi)
                {
                        if (fi.DeclaringType.IsGenericTypeDefinition ||
@@ -2136,48 +2075,6 @@
                        return fi;
                }
 
-               public static bool IsEqual (Type a, Type b)
-               {
-                       if (a.Equals (b))
-                               return true;
-
-                       if (a.IsGenericParameter && b.IsGenericParameter) {
-                               if (a.DeclaringMethod != b.DeclaringMethod &&
-                                   (a.DeclaringMethod == null || 
b.DeclaringMethod == null))
-                                       return false;
-                               return a.GenericParameterPosition == 
b.GenericParameterPosition;
-                       }
-
-                       if (a.IsArray && b.IsArray) {
-                               if (a.GetArrayRank () != b.GetArrayRank ())
-                                       return false;
-                               return IsEqual (a.GetElementType (), 
b.GetElementType ());
-                       }
-
-                       if (a.IsByRef && b.IsByRef)
-                               return IsEqual (a.GetElementType (), 
b.GetElementType ());
-
-                       if (a.IsGenericType && b.IsGenericType) {
-                               if (a.GetGenericTypeDefinition () != 
b.GetGenericTypeDefinition ())
-                                       return false;
-
-                               Type[] aargs = a.GetGenericArguments ();
-                               Type[] bargs = b.GetGenericArguments ();
-
-                               if (aargs.Length != bargs.Length)
-                                       return false;
-
-                               for (int i = 0; i < aargs.Length; i++) {
-                                       if (!IsEqual (aargs [i], bargs [i]))
-                                               return false;
-                               }
-
-                               return true;
-                       }
-
-                       return false;
-               }
-
                /// <summary>
                ///   Check whether `a' and `b' may become equal generic types.
                ///   The algorithm to do that is a little bit complicated.

Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2006-09-19 13:26:36 UTC (rev 65637)
+++ trunk/mcs/mcs/ChangeLog     2006-09-19 13:33:32 UTC (rev 65638)
@@ -1,5 +1,14 @@
 2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>
 
+       * typemanager.cs
+       (TypeManager.IsEqual): Moved the gmcs implementation here.
+       (TypeManager.DropGenericTypeArguments): Likewise.
+       (TypeManager.DropGenericMethodArguments): Likewise.
+       (TypeManager.GetTypeArguments): Moved here from gmcs.
+       (TypeManager.HasGenericArguments): Likewise.
+
+2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>
+
        * expression.cs (Binary): Merged with the gmcs version.
 
 2006-09-19  Martin Baulig  <[EMAIL PROTECTED]>

Modified: trunk/mcs/mcs/ecore.cs
===================================================================
--- trunk/mcs/mcs/ecore.cs      2006-09-19 13:26:36 UTC (rev 65637)
+++ trunk/mcs/mcs/ecore.cs      2006-09-19 13:33:32 UTC (rev 65638)
@@ -1890,6 +1890,11 @@
                        return name;
                }
 
+               public SimpleName GetMethodGroup ()
+               {
+                       return new SimpleName (RemoveGenericArity (Name), loc);
+               }
+
                public static void Error_ObjectRefRequired (EmitContext ec, 
Location l, string name)
                {
                        if (ec.IsFieldInitializer)

Modified: trunk/mcs/mcs/typemanager.cs
===================================================================
--- trunk/mcs/mcs/typemanager.cs        2006-09-19 13:26:36 UTC (rev 65637)
+++ trunk/mcs/mcs/typemanager.cs        2006-09-19 13:33:32 UTC (rev 65638)
@@ -2677,23 +2677,121 @@
 #endif
        }
 
-#if !GMCS_SOURCE
        public static bool IsEqual (Type a, Type b)
        {
-               return a.Equals (b);
+               if (a.Equals (b))
+                       return true;
+
+#if GMCS_SOURCE
+               if (a.IsGenericParameter && b.IsGenericParameter) {
+                       if (a.DeclaringMethod != b.DeclaringMethod &&
+                           (a.DeclaringMethod == null || b.DeclaringMethod == 
null))
+                               return false;
+                       return a.GenericParameterPosition == 
b.GenericParameterPosition;
+               }
+
+               if (a.IsArray && b.IsArray) {
+                       if (a.GetArrayRank () != b.GetArrayRank ())
+                               return false;
+                       return IsEqual (a.GetElementType (), b.GetElementType 
());
+               }
+
+               if (a.IsByRef && b.IsByRef)
+                       return IsEqual (a.GetElementType (), b.GetElementType 
());
+
+               if (a.IsGenericType && b.IsGenericType) {
+                       if (a.GetGenericTypeDefinition () != 
b.GetGenericTypeDefinition ())
+                               return false;
+
+                       Type[] aargs = a.GetGenericArguments ();
+                       Type[] bargs = b.GetGenericArguments ();
+
+                       if (aargs.Length != bargs.Length)
+                               return false;
+
+                       for (int i = 0; i < aargs.Length; i++) {
+                               if (!IsEqual (aargs [i], bargs [i]))
+                                       return false;
+                       }
+
+                       return true;
+               }
+#endif
+
+               return false;
        }
 
        public static Type DropGenericTypeArguments (Type t)
        {
+#if GMCS_SOURCE
+               if (!t.IsGenericType)
+                       return t;
+               // Micro-optimization: a generic typebuilder is always a 
generic type definition
+               if (t is TypeBuilder)
+                       return t;
+               return t.GetGenericTypeDefinition ();
+#else
                return t;
+#endif
        }
 
        public static MethodBase DropGenericMethodArguments (MethodBase m)
        {
+#if GMCS_SOURCE
+               if (m.IsGenericMethodDefinition)
+                       return m;
+               if (m.IsGenericMethod)
+                       return ((MethodInfo) m).GetGenericMethodDefinition ();
+               if (!m.DeclaringType.IsGenericType)
+                       return m;
+
+               Type t = m.DeclaringType.GetGenericTypeDefinition ();
+               BindingFlags bf = BindingFlags.Public | BindingFlags.NonPublic |
+                       BindingFlags.Static | BindingFlags.Instance | 
BindingFlags.DeclaredOnly;
+
+               if (m is ConstructorInfo) {
+                       foreach (ConstructorInfo c in t.GetConstructors (bf))
+                               if (c.MetadataToken == m.MetadataToken)
+                                       return c;
+               } else {
+                       foreach (MethodBase mb in t.GetMethods (bf))
+                               if (mb.MetadataToken == m.MetadataToken)
+                                       return mb;
+               }
+#endif
+
                return m;
        }
+
+       public static Type[] GetTypeArguments (Type t)
+       {
+#if GMCS_SOURCE
+               DeclSpace tc = LookupDeclSpace (t);
+               if (tc != null) {
+                       if (!tc.IsGeneric)
+                               return Type.EmptyTypes;
+
+                       TypeParameter[] tparam = tc.TypeParameters;
+                       Type[] ret = new Type [tparam.Length];
+                       for (int i = 0; i < tparam.Length; i++) {
+                               ret [i] = tparam [i].Type;
+                               if (ret [i] == null)
+                                       throw new InternalErrorException ();
+                       }
+
+                       return ret;
+               } else
+                       return t.GetGenericArguments ();
+#else
+               throw new InternalErrorException ();
 #endif
+       }
 
+       public static bool HasGenericArguments (Type t)
+       {
+               return GetNumberOfTypeArguments (t) > 0;
+       }
+
        public static int GetNumberOfTypeArguments (Type t)
        {
 #if GMCS_SOURCE

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to