Wed Aug 14 17:38:41 CEST 2002 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Wed, 14 Aug 2002 15:41:38 +0000 (15:41 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Wed, 14 Aug 2002 15:41:38 +0000 (15:41 -0000)
* TypeBuilder.cs: ReflectedType and CreateType fixes.

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

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

index 501d39eb9165412cbecb984f07cbc44ed8d4c7e3..3ddee6f2183735416d95816f212adb1e09eeb5ad 100644 (file)
@@ -1,4 +1,8 @@
 
+Wed Aug 14 17:38:41 CEST 2002 Paolo Molaro <lupus@ximian.com>
+
+       * TypeBuilder.cs: ReflectedType and CreateType fixes.
+
 Thu Aug 8 10:25:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
 
        * AssemblyBuilder.cs: added API to embed managed resources.
index 1f870c779cf0f8d9cacb89a02885122892ed7353..91f3ed2b9eab4f220d3b01f7c12aff38b2c3df81 100644 (file)
@@ -36,6 +36,7 @@ namespace System.Reflection.Emit {
        private ModuleBuilder pmodule;
        private int class_size;
        private PackingSize packing_size;
+       private Type created;
 
        public const int UnspecifiedTypeSize = -1;
 
@@ -125,7 +126,7 @@ namespace System.Reflection.Emit {
                public PackingSize PackingSize {
                        get {return packing_size;}
                }
-               public override Type ReflectedType {get {return parent;}}
+               public override Type ReflectedType {get {return nesting_type;}}
                public override MemberTypes MemberType { 
                        get {return MemberTypes.TypeInfo;}
                }
@@ -297,7 +298,13 @@ namespace System.Reflection.Emit {
                        throw new NotImplementedException ();
                }
 
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               private extern Type create_runtime_class (TypeBuilder tb);
+               
                public Type CreateType() {
+                       /* handle nesting_type */
+                       if (created != null)
+                               throw new InvalidOperationException ("type already created");
                        if (methods != null) {
                                foreach (MethodBuilder method in methods) {
                                        method.fixup ();
@@ -308,6 +315,7 @@ namespace System.Reflection.Emit {
                                        ctor.fixup ();
                                }
                        }
+                       created = create_runtime_class (this);
 
                        return this;
                }