X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2FChangeLog;h=76e4b75b16e161f00eca0a26d542401f5e099098;hb=b341bce1c92aacf5869b4817b6cb70b1557867a9;hp=b27e321e00e2f6d89cd7533462a8613a5f6b6e1a;hpb=81cd691acb26506bcdc24f6c4b144eef8dde11f5;p=mono.git diff --git a/mcs/mcs/ChangeLog b/mcs/mcs/ChangeLog index b27e321e00e..76e4b75b16e 100755 --- a/mcs/mcs/ChangeLog +++ b/mcs/mcs/ChangeLog @@ -1,3 +1,335 @@ +2002-07-02 Martin Baulig + + * expression.cs (ArrayAccess.EmitStoreOpcode): If the type is a + ValueType, call TypeManager.TypeToCoreType() on it. + (Invocations.EmitParams): Call TypeManager.TypeToCoreType() on + the OpCodes.Newarr argument. + +2002-07-02 Martin Baulig + + * expression.cs (Invocation.EmitCall): When compiling corlib, + replace all calls to the system's System.Array type to calls to + the newly created one. + + * typemanager.cs (TypeManager.InitCodeHelpers): Added a few more + System.Array methods. + (TypeManager.InitCoreTypes): When compiling corlib, get the methods + from the system's System.Array type which must be replaced. + +Tue Jul 2 19:05:05 CEST 2002 Paolo Molaro + + * typemanager.cs: load unverifiable_code_ctor so we can build + corlib using the correct type. Avoid using GetTypeCode() with + TypeBuilders. + * rootcontext.cs: uses TypeManager.unverifiable_code_ctor and + TypeManager.object_type to allow building corlib. + +Tue Jul 2 19:03:19 CEST 2002 Paolo Molaro + + * ecore.cs: handle System.Enum separately in LoadFromPtr(). + +2002-07-01 Martin Baulig + + * class.cs: Make the last change actually work, we need to check + whether `ifaces != null' to avoid a crash. + +Mon Jul 1 16:15:03 CEST 2002 Paolo Molaro + + * class.cs: when we build structs without fields that implement + interfaces, we need to add the interfaces separately, since there is + no API to both set the size and add the interfaces at type creation + time. + +Mon Jul 1 14:50:47 CEST 2002 Paolo Molaro + + * expression.cs: the dimension arguments to the array constructors + need to be converted if they are a long. + +Mon Jul 1 12:26:12 CEST 2002 Paolo Molaro + + * class.cs: don't emit ldarg.0 if there is no parent constructor + (fixes showstopper for corlib). + +2002-06-29 Martin Baulig + + MCS now compiles corlib on GNU/Linux :-) + + * attribute.cs (Attribute.ApplyAttributes): Treat Accessors like Method, + ie. check for MethodImplOptions.InternalCall. + + * class.cs (TypeContainer.DefineType): When compiling corlib, both parent + and TypeManager.attribute_type are null, so we must explicitly check + whether parent is not null to find out whether it's an attribute type. + (Property.Emit): Always call Attribute.ApplyAttributes() on the GetBuilder + and SetBuilder, not only if the property is neither abstract nor external. + This is necessary to set the MethodImplOptions on the accessor methods. + (Indexer.Emit): Call Attribute.ApplyAttributes() on the GetBuilder and + SetBuilder, see Property.Emit(). + + * rootcontext.cs (RootContext.PopulateTypes): When compiling corlib, don't + populate "System.Object", "System.ValueType" and "System.Attribute" since + they've already been populated from BootCorlib_PopulateCoreTypes(). + +2002-06-29 Martin Baulig + + * ecore.cs (Expression.ImplicitReferenceConversionExists): If expr + is the NullLiteral, we also need to make sure that target_type is not + an enum type. + +2002-06-29 Martin Baulig + + * rootcontext.cs (RootContext.ResolveCore): We must initialize + `TypeManager.multicast_delegate_type' and `TypeManager.delegate_type' + before calling BootstrapCorlib_ResolveDelegate (). + +2002-06-27 Gonzalo Paniagua Javier + + * statement.cs: fixed build-breaker. All tests passed ok. + +2002-06-27 Martin Baulig + + * typemanager.cs (TypeManager.VerifyUnManaged): Added explicit check + for System.Decimal when compiling corlib. + +2002-06-27 Martin Baulig + + * statement.cs (Switch.TableSwitchEmit): Make this work with empty + switch blocks which contain nothing but a default clause. + +2002-06-26 Andrew + + * ../errors/cs1501-3.cs: Added new test for struct ctr typechecks. + +2002-06-27 Martin Baulig + + * ecore.cs (PropertyExpr.PropertyExpr): Call + TypeManager.TypeToCoreType() on the `pi.PropertyType'. + + * typemanager.cs (TypeManager.TypeToCoreType): Return if the type + is already a TypeBuilder. + +2002-06-27 Martin Baulig + + * ecore.cs (Expression.ImplicitReferenceConversionExists): Use + `target_type == TypeManager.array_type', not IsAssignableFrom() in + the "from an array-type to System.Array" case. This makes it work + when compiling corlib. + +2002-06-27 Martin Baulig + + * ecore.cs (Expression.SimpleNameResolve): If the expression is a + non-static PropertyExpr, set its InstanceExpression. This makes + the `ICollection.Count' property work in System/Array.cs. + +2002-06-25 Andrew Birkett + + * driver.cs: Made error handling more consistent. Errors now + tracked by Report class, so many methods which used to return int + now return void. Main() now prints success/failure and + errors/warnings message. + + Renamed '--probe' compiler argument to '--expect-error'. Removed + the magic number return values (123 and 124). Now, if the + expected error occurs, the compiler exits with success (exit value + 0). If the compilation completes without seeing that particular + error, the compiler exits with failure (exit value 1). The + makefile in mcs/errors has been changed to handle the new behaviour. + + * report.cs: Made 'expected error' number a property and renamed + it from 'Probe' to 'ExpectedError'. + + * genericparser.cs: Removed error handling support, since it is + now all done by Report class. + + * cs-parser.jay, mb-parser.jay: Errors are tracked by Report + class, so parse() no longer returns an int. + + * namespace.cs: Use Report.Error instead of GenericParser.error + + +2002-06-22 Miguel de Icaza + + * class.cs (TypeContainer.AddMethod, TypeContainer.AddIndexer, + TypeContainer.AddOperator): At the front of the list put the + explicit implementations, so they get resolved/defined first. + +2002-06-21 Miguel de Icaza + + * class.cs (TypeContainer.VerifyImplements): Verifies that a given + interface type is implemented by this TypeContainer. Used during + explicit interface implementation. + + (Property.Define, Indexer.Define, Method.Define): Validate that + the given interface in the explicit implementation is one of the + base classes for the containing type. + + Also if we are explicitly implementing an interface, but there is + no match in the pending implementation table, report an error. + + (Property.Define): Only define the property if we are + not explicitly implementing a property from an interface. Use the + correct name also for those properties (the same CSC uses, + although that is really not needed). + + (Property.Emit): Do not emit attributes for explicitly implemented + properties, as there is no TypeBuilder. + + (Indexer.Emit): ditto. + + Hiding then means that we do not really *implement* a pending + implementation, which makes code fail. + +2002-06-22 Martin Baulig + + * ecore.cs (Expression.Constantify): Call TypeManager.TypeToCoreType() on + the return value of Object.GetType(). [FIXME: we need to do this whenever + we get a type back from the reflection library]. + +Fri Jun 21 13:37:57 CEST 2002 Paolo Molaro + + * typemanager.cs: make ExpandInterfaces() slip duplicated interfaces. + +2002-06-20 Miguel de Icaza + + * attribute.cs: Return null if we can not look up the type. + + * class.cs (TypeContainer.GetClassBases): Use ExpandInterfaces on + the interface types found. + + * interface.cs (Interface.GetInterfaceBases): Use ExpandInterfaces on the + interface types found. + + * typemanager.cs (GetInterfaces): Make this routine returns alll + the interfaces and work around the lame differences between + System.Type and System.Reflection.Emit.TypeBuilder in the results + result for GetInterfaces. + + (ExpandInterfaces): Given an array of interface types, expand and + eliminate repeated ocurrences of an interface. This expands in + context like: IA; IB : IA; IC : IA, IB; the interface "IC" to + be IA, IB, IC. + +2002-06-21 Martin Baulig + + * typemanager.cs (TypeManager.EnumToUnderlying): It's now safe to call this function + on System.Enum. + +2002-06-21 Martin Baulig + + * typemanager.cs (TypeManager.TypeToCoreType): New function. When compiling corlib + and called with one of the core types, return the corresponding typebuilder for + that type. + + * expression.cs (ArrayAccess.DoResolve): Call TypeManager.TypeToCoreType() on the + element type. + +2002-06-21 Martin Baulig + + * ecore.cs (Expression.ExplicitReferenceConversionExists): Use + `target_type.IsArray' instead of `target_type.IsSubclassOf (TypeManager.array_type)'. + (Expression.ConvertReferenceExplicit): Likewise. + + * expression.cs (ElementAccess.DoResolve): Likewise. + (ElementAccess.DoResolveLValue): Likewise. + +2002-06-10 Martin Baulig + + * interface.cs (Interface.PopulateIndexer): When creating the setter, we need to + add the "value" parameter to the parameter list. + + * statement.cs (Fixed.Emit): Pass the return value of the child block's Emit() + to our caller. + +2002-06-19 Miguel de Icaza + + * expression.cs (ArrayCreation.ExpressionToArrayArgument): Convert + the argument to an int, uint, long or ulong, per the spec. Also + catch negative constants in array creation. + +Thu Jun 20 17:56:48 CEST 2002 Paolo Molaro + + * class.cs: do not allow the same interface to appear twice in + the definition list. + +Wed Jun 19 22:33:37 CEST 2002 Paolo Molaro + + * ecore.cs: don't use ldlen with System.Array. + +Wed Jun 19 20:57:40 CEST 2002 Paolo Molaro + + * ecore.cs: stobj requires a type argument. Handle indirect stores on enums. + +Wed Jun 19 20:17:59 CEST 2002 Paolo Molaro + + * modifiers.cs: produce correct field attributes for protected + internal. Easy fix so miguel can work on ther harder stuff:-) + +2002-06-18 Miguel de Icaza + + * pending.cs: New file. Move the code from class.cs here. + Support clearning the pending flag for all methods (when not doing + explicit interface implementation). + +Tue Jun 18 10:36:22 CEST 2002 Paolo Molaro + + * rootcontext.cs: added a couple more types needed to bootstrap. + +2002-06-17 Miguel de Icaza + + * typemanager.cs (GetConstructor): Use DeclaredOnly to look the + constructor in the type, instead of any constructor in the type + hierarchy. Thanks to Paolo for finding this bug (it showed up as + a bug in the Mono runtime when applying the params attribute). + +2002-06-16 Rafael Teixeira + * changed namespace.cs to use "GenericParser.error(...)" instead of "CSharpParser.error(...)" + +2002-06-14 Rachel Hestilow + + * expression.cs (Unary.ResolveOperator): Use TypeManager + to resolve the type. + +2002-06-13 Ravi Pratap + + * cs-parser.jay (enum_member_declaration): Pass in the attributes + attached. + + * enum.cs (AddEnumMember): Add support to store the attributes associated + with each member too. + + * attribute.cs (CheckAttribute, ApplyAttributes): Update to handle + field builders too - this takes care of the enum member case. + +2002-06-10 Rachel Hestilow + + * typemanager.cs (TypeManager.VerifyUnManaged): Allow + address-of operator on both value types and pointers. + +2002-06-10 Martin Baulig + + * interface.cs (Interface.PopulateIndexer): Add the indexer's + PropertyBuilder to the `property_builders' list. + + * expression.cs (Indexers.GetIndexersForTypeOrInterface): New private method. + (Indexers.GetIndexersForType): Call GetIndexersForTypeOrInterface() on the + `lookup_type' and all its interfaces. Unfortunately, Type.FindMembers() won't + find any indexers which are inherited from an interface. + +2002-06-09 Martin Baulig + + * const.cs (Const.LookupConstantValue): Convert `Expr' to a literal of + the same type as the constant if necessary. There's also a test-130.cs + for this. + + * enum.cs (Enum.ChangeEnumType): Moved to typemanager.cs and made public. + + * typemanager.cs (TypeManager.ChangeType): Previously known as + Enum.ChangeEnumType(). + +2002-06-09 Martin Baulig + + * expression.cs (Cast.TryReduce): Added support for consts. + 2002-06-08 Ravi Pratap * class.cs (Accessor): Hold attributes information so we can pass @@ -78,9 +410,16 @@ 2002-05-27 Miguel de Icaza - * expression.cs (Invocation.Emit): Only emit calls to - System.Diagnostics.Debug and System.Diagnostics.Trace if the - TRACE and DEBUG defines are passed on the command line. + * typemanager.cs (MethodFlags): returns the method flags + (Obsolete/ShouldIgnore) that control warning emission and whether + the invocation should be made, or ignored. + + * expression.cs (Invocation.Emit): Remove previous hack, we should + not do this on matching a base type, we should do this based on an attribute + + Only emit calls to System.Diagnostics.Debug and + System.Diagnostics.Trace if the TRACE and DEBUG defines are passed + on the command line. * rootcontext.cs: Global settings for tracing and debugging.