* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / corlib / System.Reflection.Emit / GenericTypeParameterBuilder.cs
index 5b145956d58a64b6f9119e1b57c295b9f1131809..b668caa3b379c81aa3dcb7e4a8208177d310a723 100644 (file)
@@ -50,6 +50,7 @@ namespace System.Reflection.Emit
                private int index;
                private Type base_type;
                private Type[] iface_constraints;
+               private CustomAttributeBuilder[] cattrs;
                private GenericParameterAttributes attrs;
        #endregion
 
@@ -288,13 +289,11 @@ namespace System.Reflection.Emit
                }
 
                public override Type DeclaringType {
-                       get { return mbuilder != null ? null : tbuilder; }
+                       get { return mbuilder != null ? mbuilder.DeclaringType : tbuilder; }
                }
 
                public override Type ReflectedType {
-                       get {
-                               return DeclaringType;
-                       }
+                       get { return DeclaringType; }
                }
 
                public override RuntimeTypeHandle TypeHandle {
@@ -352,10 +351,26 @@ namespace System.Reflection.Emit
                        return ret;
                }
 
-               public override MethodInfo DeclaringMethod {
+               public override MethodBase DeclaringMethod {
                        get { return mbuilder; }
                }
 
+               public void SetCustomAttribute (CustomAttributeBuilder customBuilder)
+               {
+                       if (customBuilder == null)
+                               throw new ArgumentNullException ("customBuilder");
+
+                       if (cattrs != null) {
+                               CustomAttributeBuilder[] new_array = new CustomAttributeBuilder [cattrs.Length + 1];
+                               cattrs.CopyTo (new_array, 0);
+                               new_array [cattrs.Length] = customBuilder;
+                               cattrs = new_array;
+                       } else {
+                               cattrs = new CustomAttributeBuilder [1];
+                               cattrs [0] = customBuilder;
+                       }
+               }
+
                private Exception not_supported ()
                {
                        return new NotSupportedException ();