Add dynamic transform for base types
authorMarek Safar <marek.safar@gmail.com>
Thu, 17 Jun 2010 10:12:03 +0000 (10:12 -0000)
committerMarek Safar <marek.safar@gmail.com>
Thu, 17 Jun 2010 10:12:03 +0000 (10:12 -0000)
svn path=/trunk/mcs/; revision=159057

mcs/mcs/class.cs

index 49836029e9ebc8fc253c946e0e1b6348ad98a03b..9a7c9c4f1ed801b6cc4f664bd6d61c6cdf0bb65a 100644 (file)
@@ -2314,6 +2314,14 @@ namespace Mono.CSharp {
 
                        if ((ModFlags & Modifiers.METHOD_EXTENSION) != 0)
                                PredefinedAttributes.Get.Extension.EmitAttribute (TypeBuilder);
+
+                       var trans_flags = TypeManager.HasDynamicTypeUsed (base_type);
+                       if (trans_flags != null) {
+                               var pa = PredefinedAttributes.Get.DynamicTransform;
+                               if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
+                                       TypeBuilder.SetCustomAttribute (new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
+                               }
+                       }
                }
 
                protected override TypeExpr[] ResolveBaseTypes (out TypeExpr base_class)