2010-04-20 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 20 Apr 2010 19:29:34 +0000 (19:29 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 20 Apr 2010 19:29:34 +0000 (19:29 -0000)
* TypeBuilder.cs (CreateType): Move default constructor
and createTypeCalled assignment to before the parent checks.

* TypeBuilder.cs (is_created): Return true even if creation
fails.

Fixes #331126

svn path=/trunk/mcs/; revision=155832

mcs/class/corlib/System.Reflection.Emit/ChangeLog
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs

index e849e7dbd80176c274a5b1c1a2d230ea721faf23..e4ee42ee92873151d0e5af2e01a9013adcaeaa3f 100644 (file)
@@ -1,3 +1,13 @@
+2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * TypeBuilder.cs (CreateType): Move default constructor
+       and createTypeCalled assignment to before the parent checks.
+
+       * TypeBuilder.cs (is_created): Return true even if creation
+       fails.
+
+       Fixes #331126
+
 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * TypeBuilder.cs (IsValueTypeImpl): Don't depend on
index 1358079b578f35e581ed127c622c15a777510683..0a7be28f12e0fdf5cc4146d4913b26bd6bbf5c2e 100644 (file)
@@ -766,6 +766,15 @@ namespace System.Reflection.Emit
                                }
                        }
 
+                       //
+                       // On classes, define a default constructor if not provided
+                       //
+                       if (!(IsInterface || IsValueType) && (ctors == null) && (tname != "<Module>") && 
+                               (GetAttributeFlagsImpl () & TypeAttributes.Abstract | TypeAttributes.Sealed) != (TypeAttributes.Abstract | TypeAttributes.Sealed) && !has_ctor_method ())
+                               DefineDefaultConstructor (MethodAttributes.Public);
+
+                       createTypeCalled = true;
+
                        if ((parent != null) && parent.IsSealed)
                                throw new TypeLoadException ("Could not load type '" + FullName + "' from assembly '" + Assembly + "' because the parent type is sealed.");
 
@@ -783,19 +792,11 @@ namespace System.Reflection.Emit
                                }
                        }
 
-                       //
-                       // On classes, define a default constructor if not provided
-                       //
-                       if (!(IsInterface || IsValueType) && (ctors == null) && (tname != "<Module>") && 
-                               (GetAttributeFlagsImpl () & TypeAttributes.Abstract | TypeAttributes.Sealed) != (TypeAttributes.Abstract | TypeAttributes.Sealed) && !has_ctor_method ())
-                               DefineDefaultConstructor (MethodAttributes.Public);
-
                        if (ctors != null){
                                foreach (ConstructorBuilder ctor in ctors) 
                                        ctor.fixup ();
                        }
 
-                       createTypeCalled = true;
                        created = create_runtime_class (this);
                        if (created != null)
                                return created;
@@ -1648,7 +1649,7 @@ namespace System.Reflection.Emit
 
                internal bool is_created {
                        get {
-                               return created != null;
+                               return createTypeCalled;
                        }
                }