2005-11-07 Miguel de Icaza <miguel@novell.com>
[mono.git] / mcs / gmcs / support.cs
index 9153df4ece8c5054fa7d3a38e015799919508ad7..328fbbeea7e1d5931cbab066838ee21a9c27d1ad 100644 (file)
@@ -78,6 +78,11 @@ namespace Mono.CSharp {
                                        sb.Append (", ");
                                sb.Append (ParameterDesc (i));
                        }
+                       if (is_varargs) {
+                               if (pi.Length > 0)
+                                       sb.Append (", ");
+                               sb.Append ("__arglist");
+                       }
                        sb.Append (')');
                        return sb.ToString ();
                }
@@ -140,7 +145,7 @@ namespace Mono.CSharp {
 
                        if (pos >= pi.Length - 1 && last_arg_is_params)
                                sb.Append ("params ");
-                       
+
                        sb.Append (TypeManager.CSharpName (partype).Replace ("&", ""));
 
                        return sb.ToString ();
@@ -241,6 +246,11 @@ namespace Mono.CSharp {
                                        sb.Append (", ");
                                sb.Append (ParameterDesc (i));
                        }
+                       if (has_varargs) {
+                               if (count > 0)
+                                       sb.Append (", ");
+                               sb.Append ("__arglist");
+                       }
                        sb.Append (')');
                        return sb.ToString ();
                }
@@ -295,7 +305,6 @@ namespace Mono.CSharp {
                                return "out";
                        if (p.ModFlags == Parameter.Modifier.PARAMS)
                                return "params";
-
                        return "";
                }
 
@@ -320,9 +329,11 @@ namespace Mono.CSharp {
                Type base_type;
                Type class_constraint;
                Type[] iface_constraints;
+               string name;
 
                public ReflectionConstraints (Type t)
                {
+                       name = t.Name;
                        Type[] constraints = t.GetGenericParameterConstraints ();
                        if ((constraints.Length > 0) && !constraints [0].IsInterface) {
                                class_constraint = constraints [0];
@@ -340,6 +351,10 @@ namespace Mono.CSharp {
                                base_type = TypeManager.object_type;
                }
 
+               public override string TypeParameter {
+                       get { return name; }
+               }
+
                public override GenericParameterAttributes Attributes {
                        get { return attrs; }
                }