2008-09-23 Marek Safar <marek.safar@gmail.com>
[mono.git] / mcs / class / corlib / System.Reflection.Emit / ChangeLog
index 08e2563baf507b44b993b8c78f932c9c83d44192..9bde1e97d93fa44dbe7b770e0226ba706b8d1921 100644 (file)
@@ -1,3 +1,335 @@
+2008-09-23  Marek Safar  <marek.safar@gmail.com>
+
+       * ModuleBuilder.cs: Fixed NRE when default symbol writer cannot be
+       loaded. 
+2008-09-16  Jb Evain  <jbevain@novell.com>
+
+       * AssemblyBuilder.cs (AddTypeForwarder): correctly grow the
+       type_forwarders array, to make that work for more than one
+       type forwarder. Managed part of the fix for #422929.
+
+2008-09-04  Marek Safar  <marek.safar@gmail.com>
+
+       * TypeBuilder.cs: Add mcs specific SetCharSet method.
+
+2008-08-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * TypeBuilder.cs (CreateType): Avoid creating a default ctor if the
+       type has a constructor defined using DefineMethod. Fixes #416632.
+
+2008-07-25  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * TypeBuilder.cs (GetMethod): Allow created TypeBuilders
+       to be used.
+
+2008-07-23  Marek Safar  <marek.safar@gmail.com>
+                       Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * TypeBuilder.cs (GetMethod): A fix for #408933
+
+2008-07-22  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * MethodOnTypeBuilderInst.cs: Change visibility of the parent
+       MethodBuilder to internal.
+
+2008-07-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * CustomAttributeBuilder.cs (get_umarshal): Add support for all 
+       MarshalAsAttribute fields to fix the build.
+       
+       * CustomAttributeBuilder.cs (get_umarshal): Decode enums properly.
+
+2008-07-21  Marek Safar  <marek.safar@gmail.com>
+
+       * ParameterBuilder.cs, CustomAttributeBuilder.cs: Check for
+       UnmanagedType.ByValArray to be used only on fields.
+
+2008-07-16  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * MethodOnTypeBuilderInst.cs: Special case all methods
+       under compiler context as needed by mcs. 
+
+       * MethodBuilder.cs: Change the visibility of some fields
+       to internal so MethodOnTypeBuilderInst can use it.
+
+2008-07-11  Marek Safar  <marek.safar@gmail.com>
+
+       * ModuleBuilder.cs: Couple of micro optimizations.
+
+2008-07-03  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>
+
+       * SignatureHelper.cs: Fix parameter names
+       * ModuleBuilder.cs: Fix parameter names
+
+2008-06-18 Rodrigo Kumpera <rkumpera@novell.com>
+
+       * TypeBuilder.cs (IsAssignableTo): Fixed check for interfaces
+       defined on parent. Based on Geoff's Norton patch.
+       Fixes #349194.
+
+2008-06-12  Marek Safar  <marek.safar@gmail.com>
+
+       * MethodBuilder.cs: Removed SetGenericMethodSignature.
+
+2008-06-06  Jb Evain  <jbevain@novell.com>
+
+       * OpCodes.cs: OpCode constrained. is of type InlineType.
+
+2008-05-18  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * TypeBuilder.cs (IsAssignableTo): When an interface is passed as
+       argument and the TypeBuilder has been created, also check if parent
+       can be assigned to type.
+
+2008-05-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * TypeBuilder.cs (.ctor): Convert a null parent to typeof (object) here, not just
+       in CreateType (). Fixes #389171.
+
+2008-05-11  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * FieldBuilder.cs: Added null check for type.
+       * TypeBuilder.cs: For enums, construct UnderlyingSystemType when
+       first instance field is defined instead of having to lookup it up on
+       demand. Avoid cast in IsCompilerContext.
+
+2008-05-11  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * TypeBuilder.cs: Use Assembly.FullName instead of AssemblyName.
+       In UnderlyingSystemType, return UnderlyingSystemType of created type
+       when available. For an enum, UnderlyingSystemType is the type of the
+       first instance field. If no instance field is available, throw an
+       InvalidOperationException. Retain original behavior when operating in
+       compiler context.
+       * ConstructorBuilder.cs: Moved implementation of GetParameters to
+       GetParametersInternal to allow it to be used internally when type is
+       not yet created.
+       * CustomAttributeBuilder.cs: Added GetParameters method that uses
+       GetParametersInternal on ConstructorBuilder, and use it where
+       necessary.      
+
+2008-05-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * ConstructorBuilder.cs: Revert the throw not_created () change as it causes
+       vbnc bootstrap to fail. Fixes #386419.
+
+2008-05-01  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * ConstructorBuilder.cs: Switch arguments for AORE.
+
+2008-04-30  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * ModuleBuilder.cs (DefineType): Do not perform lookup of in cache if
+       name is null to allow correct exception to be thrown (in TypeBuilder
+       ctor).
+       * TypeBuilder: Moved name argument check to TypeBuilder ctor. Modified
+       ArgumentException parameter names to match MS. Removed duplicate check
+       for data length from DefineInitializedData. Modified check_name to
+       only throw when first character is null char.
+       * ConstructorBuilder.cs (GetParameters): Throw NotSupportedException
+       (2.0) or InvalidOperationException (1.0) when type is not yet created
+       and we're not in compiler context. Return empty array when no
+       parameters are defined.
+       (MethodHandle): Always throw NotSupportedException.
+       (DefineParameter): Prevent NRE when parameters is null.
+       (GetCustomAttributes): When not in compiler context, always throw
+       NotSupportedException.
+       * ConstructorOnTypeBuilderInst.cs: Delegate to ConstructorBuilder
+       where possible. Fixed ContainsGenericParameters and IsGenericMethod
+       to always return false. In MethodBase.Invoke, throw an
+       InvalidOperationException instead of NIE.
+
+2008-04-26  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * MethodOnTypeBuilderInst.cs: Added overrides for ReturnType and 
+       GetGenericMethodDefinition. Implement GetGenericArgument,
+       IsGenericMethod(Definition). Throw NotSupportedException instead of
+       NotImplementedException.
+
+2008-04-26  Jb Evain  <jbevain@novell.com>
+
+       * ILGenerator.cs, AssemblyBuilder.cs, TypeBuilder.cs:
+       replace usages of new Type [0] by Type.EmptyTypes.
+       Found with Gendarme.
+
+2008-04-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * MethodOnTypeBuilderInst.cs ConstructorOnTypeBuilderInst: New files.
+
+2008-03-29  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * AssemblyBuilder.cs: Added enum that determines the type of the
+       native (version) resource. Added fields for holding the native
+       resource type and the version culture. The versioninfo_culture was
+       introduced to hold the original culture of the assembly, since
+       the AssemblyCultureAttribute should only affect the language of the
+       versioninfo block when not used in compiler context. Move constructin
+       of native version info to DefineVersionInfoResourceImpl to allow
+       attributes to affect the versioninfo after DefineVersionInfoResource
+       has been invoked. Allow ArgumentException for invalid culture string
+       to bubble up. In compiler context, use FileVersion as default value
+       for ProductionVersion.
+
+2008-03-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * FieldOnTypeBuilderInst.cs: New file.
+
+2008-03-11  Marek Safar  <marek.safar@gmail.com>
+
+       * MethodBuilder.cs (GetGenericArguments): Returns Type.EmptyType.
+
+2008-03-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * AssemblyBuilder.cs: Define GetManifestModule () for net 2.0 bootstrap too.
+
+       * DynamicMethod.cs: Create a dynamic assembly to hold the anon hosted methods.
+       
+       * DynamicMethod.cs: Add net 3.5 ctor overloads.
+
+       * ModuleBuilder.cs (RegisterToken): New icall.
+
+       * MethodBuilder.cs (ctor): Call ModuleBuilder.RegisterToken (), so the token gets
+       added to the internal hash table. Fixes #367668.
+
+       * ConstructorBuilder.cs: Ditto.
+       
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+        * SignatureHelper.cs (GetMethodSigHelper): if returnType
+        is null, use typeof (void) instead. Fixes #367663.
+
+2008-03-03 Rodrigo Kumpera <rkumpera@novell.com>
+
+       * MethodBuilder.cs (check_override): Added, verify if this method has explicit
+       override set and doesn't follow virtual settings of overriden method.
+
+       * TypeBuilder.cs (CreateType): Call MethodBuilder::check_override before
+       creating the type.
+
+       Fixes #361689.
+
+2008-01-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * ModuleBuilder.cs: Fix build.
+
+       * AssemblyBuilder.cs (GetTypes): Implement this entirely in managed code.
+
+       * ModuleBuilder.cs (GetTypes): Replace TypeBuilders with their created types to
+       match MS.
+
+       * AssemblyBuilder.cs: Override GetModulesInternal () so we can return
+       ModuleBuilders.
+
+2008-01-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * TypeBuilder.cs (GenerateDebugInfo): Emit debug info for nested types as well.
+       Fixes #356316.
+
+2008-01-21  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * AssemblyBuilder.cs: Introduce magic value for AssemblyBuilderAccess
+       to signal usage from a compiler. On 2.0 profile, perform argument
+       check for access. Use AssemblyFlags passed in through AssemblyName
+       arguments. Modified SetCustomAttribute to only use the Assembly*
+       attribute for constructing the assembly name when used in compiler
+       context. Fixes corlib part of bug #354970.
+
+2008-01-17  Zoltan Varga  <vargaz@gmail.com>
+
+       * TypeBuilder.cs (GetConstructorImpl): Add back the code removed by the last
+       patch since it is needed when building mscorlib.
+
+2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * TypeBuilder.cs (GetConstructorImpl): Use GetConstructor on created
+       type. Original implementation did not take into account the binding
+       flags and failed with a NotSupportedException if the default binder
+       checked if a ParamArrayAttribute was defined. It also does not make
+       sense to return a ConstructorBuilder once the type is emitted.
+       (GetConstructors): When the type is emitted, use GetConstructors
+       on the created type.
+       (GetFields): Removed duplicate code.
+       (GetMethodsByName): Fixed matching of methods in the parent class
+       depending on their accessibility:
+       - Private: never include private methods of parent
+       - Public: ignore if Public flag is not set
+       - Assembly: ignore if NonPublic is not set or when on the 1.0 profile
+       - Rest (Family, FamANDAssem, FamORAssem): ignore if NonPublic flag is
+         not set
+       Static methods of the parent are ignored unless the FlattenHierarchy
+       flag is set.
+       (GetProperties): When the type is emitted, use GetProperties on the
+       created type as the TypeBuilder implementation itself does not include
+       properties from the parent class.
+
+2007-12-31  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * AssemblyBuilder.cs (UnprotectedGetName): Set the public key token
+       as well.
+
+2007-12-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * FieldBuilder.cs (GetToken): Use the MetadataToken property.
+
+2007-11-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * GenericTypeParameterBuilder.cs : fixed regression.
+         GenericParameterAttributes also needs some special care.
+
+2007-11-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * MethodBuilder.cs : implemented ContainsGenericParameters().
+       * GenericTypeParameterBuilder.cs : removed most of extra members
+         and added missing members for 2.0 API.
+
+2007-11-18  Miguel de Icaza  <miguel@novell.com>
+
+       * SignatureHelper.cs: Implement Equals and GetHashCode
+
+2007-11-17  Miguel de Icaza  <miguel@novell.com>
+
+       * SignatureHelper.cs: Preparational tasks to support the
+       AddArgument overloads that allow the specification of modopts and
+       modreqs. 
+
+       Refactor code, add new parameters. 
+
+       * SignatureHelper.cs (AddArguments): Add new 2.0 API, used by
+       new versions of the DLR.   Currently does not have support for
+       modreq, modopts.   Just a simple wrapper as consumed by the DLR.
+
+2007-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * AssemblyBuilder.cs : added missing 2.0 member.
+       * DynamicMethod.cs : removed extra stuff.
+       * DynamicILInfo.cs : no public .ctor().
+       * ILGenerator.cs : fixed 2.0 member signatures.
+
+2007-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * EnumBuilder.cs, TypeBuilder.cs : implemented missing 2.0
+         stuff, in harmless manner.
+
+2007-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ConstructorBuilder.cs : added CallingConvention.
+
+2007-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SignatureHelper.cs : Module can be null, and for non-
+         ModuleBuilder argument, throw ArgumentException.
+         Added missing 2.0 stuff.
+
+2007-11-08  Rodrigo Kumpera <rkumpera@novell.com>
+
+       * TypeBuilder.cs: Workaround for #82625 not needed anymore.
+       GetFields() returns the created type fields.
+
+2007-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * ILGenerator.cs: Added missing null checks. Removed extra tabs.
+
 2007-09-23  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * AssemblyBuilder.cs: Added missing paramname to ArgumentExceptions.