* get.c (get_method_core): Emit generic arity for a MemberRef.
authorAnkit Jain <radical@corewars.org>
Fri, 27 Jan 2006 20:48:52 +0000 (20:48 -0000)
committerAnkit Jain <radical@corewars.org>
Fri, 27 Jan 2006 20:48:52 +0000 (20:48 -0000)
(get_method_override): Emit full sig only if its a generic type.

svn path=/trunk/mono/; revision=56189

mono/dis/ChangeLog
mono/dis/get.c

index 8ee2b16a613c3e9276cf6ebba9428bdab9a54454..8500f8dd5bdd1619063cf1da2ff91f7d133165cc 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-28  Ankit Jain  <jankit@novell.com>
+
+       * get.c (get_method_core): Emit generic arity for a MemberRef.
+       (get_method_override): Emit full sig only if its a generic type.
+
 2006-01-27  Ankit Jain  <jankit@novell.com>
 
        * get.c (get_methodref_signature): Remove 'context' parameter.
index fa23585ea6e12d043d765d7a476040d4998014df..703374ea192a44655128906fab8f6b4e99a4a5b5 100644 (file)
@@ -1857,6 +1857,22 @@ get_method_core (MonoImage *m, guint32 token, gboolean fullsig, MonoGenericConte
                        name = g_strdup_printf ("%s::%s",
                                                get_memberref_parent (m, member_cols [MONO_MEMBERREF_CLASS], context),
                                                mono_metadata_string_heap (m, member_cols [MONO_MEMBERREF_NAME]));
+               if (mh) {
+                       int arity = 0;
+
+                       if (mh->generic_container)
+                               arity = mh->generic_container->type_argc;
+                       else
+                       if (mh->is_inflated && ((MonoMethodInflated *)mh)->declaring->generic_container)
+                               arity = ((MonoMethodInflated*) mh)->declaring->generic_container->type_argc;
+
+                       if (arity > 0) {
+                               char *str = g_strdup_printf ("%s <[%d]>", name, arity);
+                               g_free (name);
+                               name = str;
+                       }
+               }
+                               
                sig = get_methodref_signature (
                        m, member_cols [MONO_MEMBERREF_SIGNATURE], name);
                break;
@@ -2989,8 +3005,7 @@ get_method_override (MonoImage *m, guint32 token, MonoGenericContext *context)
                        mh = mono_get_method_full (m, decl, NULL, context);
                        mh = mono_get_inflated_method (mh);
 
-                       if ((mh && (mh->is_inflated || mh->generic_container)) || 
-                           (mh->klass && (mh->klass->generic_class || mh->klass->generic_container))) {
+                       if (mh && (mh->klass && (mh->klass->generic_class || mh->klass->generic_container))) {
                                char *meth_str;
                                char *ret;