X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fgmcs%2FChangeLog;h=e2305345a6300d796ca51fadeccded93b9d41029;hb=1b3d113f2ca8f7bc9dbef58d9e3ab023f761462f;hp=bbcecd51d1a711325e134d4f10013eab81bf8b6c;hpb=cb877df732aff8ec61b1cc7d3e8e648a873aafda;p=mono.git diff --git a/mcs/gmcs/ChangeLog b/mcs/gmcs/ChangeLog index bbcecd51d1a..e2305345a63 100644 --- a/mcs/gmcs/ChangeLog +++ b/mcs/gmcs/ChangeLog @@ -1,5 +1,426 @@ +2005-02-11 Miguel de Icaza + + * anonymous.cs (CaptureContext): Track whether `this' has been + referenced. + + * expression.cs (This.ResolveBase): Call CaptureThis. Before we + only captured `this' if it was implicitly done (instance + methods/variables were used). + + * codegen.cs (EmitContext.CaptureThis): New method to flag that + `this' must be captured. + +2005-01-30 Miguel de Icaza + + * anonymous.cs (CreateMethodHost): If there Scope.ScopeTypeBuilder + is null it means that there has been no need to capture anything, + so we just create a sibling. + + Renamed `EmitHelperClasses' to `EmitAnonymousHelperClasses' + + Just a partial fix. The other half is fairly elusive. + +2005-02-10 Raja R Harinath + + Fix #52586, cs0121-4.cs. + * decl.cs (MemberCache.DeepCopy): Rename from SetupCache. Take + and return a hashtable. + (MemberCache.ClearDeclaredOnly): New. + (MemberCache.MemberCache): Update to change. Make a deep copy of + the method_hash of a base type too. + (MemberCache.AddMethods): Adapt to having a deep copy of the base + type methods. Overwrite entries with the same MethodHandle so + that the ReflectedType is correct. The process leaves in base + virtual functions and their overrides as distinct entries. + (CacheEntry): Now a class instead of a struct. It shouldn't alter + matters since it was boxed in a ArrayList before. + (CacheEntry.Member, CacheEntry.EntryType): Remove 'readonly' + modifier. + * expression.cs (Invocation.BetterFunction): Simplify. Handle the + case of a virtual function and its override (choose the overload + as better). + (Invocation.OverloadResolve): Avoid 'override' members during + 'applicable_type' calculation. + +2005-02-09 Raja R Harinath + + Combine two near-redundant caches. + * typemanager.cs (method_params): Rename from method_internal_params. + (TypeManager.GetParameterData): New. Replace + Invocation.GetParameterData. + (TypeManager.LookupParametersByBuilder): Remove. + * expression.cs (Invocation.method_parameter_cache): Remove. + (Invocation.GetParameterData): Remove. + Update to changes. + * anonymous.cs, attribute.cs, convert.cs, delegate.cs: + Update to changes. + +2005-02-08 Raja R Harinath + + Fix #72015. + * delegate.cs (Delegate.DefineType): When bootstrapping corlib, if + TypeManager.multicast_delegate_type is null, resolve it by looking + up "System.MulticastDelegate". + * rootcontext.cs (RootContext.ResolveCore): Simplify. + +2005-02-07 Abin Thomas (NOSIP) + Anoob V.E (NOSIP) + Harilal P.R (NOSIP) + + Fix cs0164.cs. + * statement.cs (LabeledStatement.Resolve): Don't set 'referenced'. + (LabeledStatement.AddReference): New. Set 'referenced'. + (Goto.Resolve): Use it. + +2005-02-05 John Luke + + * driver.cs: remove duplicate -doc line in Usage () + +2005-02-04 Raja R Harinath + + * location.cs (Location.AddFile): Fix CS2002 error report. + +2005-02-02 Martin Baulig + + * delegate.cs (Delegate.DefineType): Report an internal error if + TypeManager.multicast_delegate_type is null. See bug #72015 for + details. + +2005-02-02 Raja R Harinath + + Fix a crasher in a variant of #31984. + * const.cs (Constant.CheckBase): New override that defers the + new-or-override check in case the base type hasn't been populated + yet. + (Constant.Define): Ensure the new-or-override check is performed. + +2005-02-01 Duncan Mak + + * const.cs (LookupConstantValue): Check that `ce' is not null + before calling GetValue (). + +2005-02-01 Raja R Harinath + + Fix test-334.cs (#69519). + * cs-parser.jay (using_alias_directive): Pass in an expression to + NamespaceEntry.UsingAlias. + (using_namespace_directive): Pass in an expression to + NamespaceEntry.Using. + (namespace_name): Don't flatten to a string. + * namespace.cs (NamespaceEntry.AliasEntry): Store an expression. + (NamespaceEntry.AliasEntry.Resolve): Lookup using + ResolveAsTypeStep. + (NamespaceEntry.UsingEntry): Likewise. + (NamespaceEntry.Using,NamespaceEntry.UsingAlias): Update to + changes. + (NamespaceEntry.LookupForUsing): Remove. + (NamespaceEntry.LookupNamespaceOrType): Add support for dotted + names. + (NamespaceEntry.Lookup): Remove support for dotted names. + +2005-02-01 Raja R Harinath + + * namespace.cs (NamespaceEntry.NamespaceEntry): Simplify, and + split into two. + (NamespaceEntry.ImplicitParent): Compute on demand. + (NamespaceEntry.Doppelganger): New implicit namespace-entry that + parallels the current. + (NamespaceEntry.LookupForUsing): Use it. + (NamespaceEntry.Lookup): If the current namespace-entry is + implicit, don't search aliases and using tables. + +2005-02-01 Raja R Harinath + + Fix #31984. + * class.cs (TypeContainer.DoDefineMembers): Don't initialize + BaseCache here. + (TypeContainer.BaseCache): Compute on demand. + (TypeContainer.FindMembers): Define constants and types if they're + not already created. + (FieldMember.Define): Move resetting of ec.InUnsafe before error + check. + * const.cs (Constant.Define): Make idempotent. + +2005-01-29 Miguel de Icaza + + * pending.cs: Produce better code (no nops produced by using Ldarg + + value). + + * pending.cs (PendingImplementation.DefineProxy): It was not `arg + i - 1' it should be arg + 1. + + Fixes bug #71819. + +2005-01-28 Raja R Harinath + + * attribute.cs (Attribute.CheckAttributeType): Make private + non-virtual. + (Attribute.ResolveType): Make virtual. + (GlobalAttribute.ResolveType,GlobalAttribute.Resolve): Simplify + handling of RootContext.Tree.Types. + +2005-01-27 Raja R Harinath + + Update attribute-handling to use the SimpleName/MemberAccess + mechanisms. + * cs-parser.jay (attribute): Pass in an expression to the + constructors of Attribute and GlobalAttribute. + * attribute.cs (Attribute): Take an expression for the name. + (Attribute.ResolvePossibleAttributeTypes): New. Resolves the + passed in attribute name expression. + (Attribute.CheckAttributeType): Use it. + * ecore.cs (FullNamedExpression.ResolveAsTypeStep): New. + * expression.cs (MemberAccess.ResolveAsTypeStep): Move body to ... + (MemberAccess.ResolveNamespaceOrType): ... here. Add 'silent' + argument to prevent error messages if the lookup fails. + +2005-01-27 Marek Safar + + * expression.cs (Indirection): Implemented IVariable interface + to support indirection in AddressOf operator. + (PointerArithmetic.Emit): Add optimalization for case where + result can be precomputed. + +2005-01-26 Martin Baulig + + * class.cs (TypeContainer.AttributeTargets): Return the correct + AttributeTargets depending on our `Kind' instead of throwing an + exception; fixes #71632. + +2005-01-26 Marek Safar + + Fix #71257 + * expression.cs (MemberAccess.ResolveMemberAccess): Add CS0176 test for + constant members. + +2005-03-17 Martin Baulig + + * anonymous.cs (AnonymousMethod.method_modifiers): Change default + from `Modifiers.INTERNAL' to `Modifiers.PRIVATE'. Fixes #73260. + +2005-03-17 Martin Baulig + + * anonymous.cs (AnonymousMethod.EmitMethod): Changed return type + to bool so we can return an error condition. + (AnonymousDelegate.Emit): Check whether AnonymousMethod.EmitMethod() + returned an error. + +2005-03-17 Martin Baulig + + * generic.cs (TypeMananager.IsIEnumerable): New public method. + + * convert.cs (Convert.ImplicitReferenceConversion(Exists)): Allow + converting from an array-type of T to `IEnumerable'. + +2005-03-16 Martin Baulig + + * generic.cs (Nullable.Unwrap): Implement IAssignMethod. + (Nullable.LiftedUnaryMutator): New public class. + + * expression.cs (UnaryMutator.DoResolve): Added support for + Nullable Types. + +2005-03-14 Martin Baulig + + * generic.cs (Nullable.NullCoalescingOperator): Implemented. + +2005-03-14 Martin Baulig + + * generic.cs (Nullable.LiftedBinaryOperator): Added support for + the comparision operators `<', `>', `<=' and `>='. + +2005-03-13 Martin Baulig + + * generic.cs + (Nullable.NullLiteral): Renamed to `Nullable.NullableLiteral' to + avoid confusion with the `NullLiteral'. + (Nullable.LiftedBinaryOperator): Correctly implement `==' and '!='. + +2005-03-13 Martin Baulig + + * expression.cs (Binary.ResolveOperator): For `==' and `!=', allow + comparing arbitrary types with the null literal. + +2005-03-13 Martin Baulig + + * generic.cs (Nullable.LiftedBinaryOperator): Add support for the + boolean operators '&&', '||', '&' and '|'. + (Nullable.OperatorTrueOrFalse): New public class. + + * ecore.cs (Expression.GetOperatorTrue/False): Return an `Expression' + instead of a `StaticCallExpr'; added support for nullables. + +2005-03-10 Martin Baulig + + * expression.cs + (ArrayAccess.EmitDynamicInitializers): Use `etype.IsValueType' + rather than `etype.IsSubclassOf (TypeManager.value_type)'. + +2005-03-07 Martin Baulig + + * generic.cs (Nullable.Unwrap): Implement IMemoryLocation and make + it work if `expr' is not an IMemoryLocation. + (Nullable.Lifted): Implement IMemoryLocation. + (Nullable.LiftedConversion.ResolveUnderlying): Use the correct + target type. + +2005-03-05 Martin Baulig + + * generic.cs (Nullable.Unwrap, Wrap): New protected classes. + (Nullable.Lifted): New abstract class; rewrote the lifted conversions. + (Nullable): Added support for lifted unary and binary operators. + + * expression.cs (Unary.DoResolve): Added support for nullable types. + (Binary.DoResolve): Likewise. + (Conditional.DoResolve): Likewise. + +2005-03-02 Martin Baulig + + * decl.cs (DeclSpace.SetParameterInfo): Make this virtual. + + * class.cs (ClassPart.SetParameterInfo): Override this. + (PartialContainer.SetParameterInfo): Override this. + (TypeContainer.CheckConstraints): New protected method. + (PartialContainer.CheckConstraints): Override this and check + whether the same contraints were specified in all parts of a + partial generic type definition. + (PartialContainer.UpdateConstraints): New public method. + + * generic.cs (TypeParameter.UpdateConstraints): New public method. + +2005-03-02 Martin Baulig + + Committing a patch from Carlos Alberto Cortez to fix #72887. + + * convert.cs (Convert.ExplicitReferenceConversionExists): Allow + casts from `T []' to `int []'. + +2005-03-02 Martin Baulig + + * generic.cs (TypeManager.IsEqual): Make this symmetric. + + * expression.cs (Binary.ResolveOperator): When resolving a + BinaryDelegate, use `TypeManager.IsEqual (l, r)' rather than just + `=='. Fixes #71866. See gen-127.cs. + +2005-03-02 Martin Baulig + + * class.cs (TypeContainer.DoDefineMembers): We also need a default + static constructor in static classes. + +2005-03-02 Martin Baulig + + * generic.cs + (NullableType.Name, NullableType.FullName): Add a "?" to the name. + (Nullable.LiftedConversion): Added support for user-defined + conversions. + + * cs-tokenizer.cs (Tokenizer.PutbackCloseParens): New public method. + + * cs-parser.jay: Use ComposedCast everywhere instead of + NullableType, so we don't need to check for NullableType + everywhere. + (conditional_expression): Added `INTERR CLOSE_PARENS' rule for the + case where we'll be resolved into a `parenthesized_expression_0' + afterwards. + + * convert.cs + (Convert.UserDefinedConversion): Added nullable conversions. + +2005-02-28 Martin Baulig + + * generic.cs (TypeManager.IsNullableType): New static method. + (Nullable): New abstract class. + (Nullable.NullLiteral): New public class. + (Nullable.LiftedConversion): New public class. + + * cs-parser.jay (non_expression_type): Changed `builtin_types' to + `builtin_types opt_nullable'. + + * convert.cs + (Convert.ImplicitConversionStandard): Added nullable conversions. + (Convert.ExplicitConversionStandard): Likewise. + (Convert.ExplicitConversion): Likewise. + +2005-02-26 Martin Baulig + + * expression.cs (ComposedCast.DoResolveAsTypeStep): Allow `dim' to + begin with a "?", for instance "?[]". Don't do a type lookup if + `dim' is empty. + +2005-02-25 Martin Baulig + + The first part of Nullable Types :-) + + * generic.cs (NullableType): New public class. + (NullCoalescingOperator): New public class. + (TypeArguments.Resolve): Add a CS0306 check. + + * cs-parser.jay (opt_error_modifier): Removed, this was unused. + (opt_nullable): New rule. + (type): Added `opt_nullable' to `namespace_or_type_name', + `builtin_types' and `pointer_type'. + (array_type): Added `opt_nullable'. + (opt_rank_specifier_or_nullable): New rule; this is the + combination of `opt_rank_specifier' and `opt_nullable'. + (opt_error): New rule; catch errors here. + (nullable_type_or_conditional): New rule; we use this to check for + nullable and still detect the conditional operator. + (local_variable_type): Use `opt_rank_specifier_or_nullable' + instead `opt_rank_specifier'. + + * expression.cs (ComposedCast.DoResolveAsTypeStep): Added support + for nullables. + +2005-02-24 Martin Baulig + + * README, README.Changes: Removed; they're old and obsolete. + +2005-02-22 Martin Baulig + + * generic.cs (TypeParameter.Resolve): If resolving the constraints + returned an error, set `constraints' to null to avoid a crash + later on. + (TypeParameter.ResolveType): Likewise. + +2005-02-22 Martin Baulig + + * generic.cs + (Constraints.ResolveTypes): Protect against being called twice. + (Constraints.CheckInterfaceMethod): Don't call ResolveTypes(). + (TypeParameter.ResolveType): New public method; calls + constraints.ResolveTypes(). + (TypeParameter.DefineType): Moved constraints.ResolveType() out + into the new ResolveType(). + (GenericMethod.Define): Call ResolveType() on all our + TypeParameter's. + +2005-02-21 Martin Baulig + + * generic.cs + (TypeManager.generic_nullable_type): New static public field. + (TypeManager.InitGenericCoreType): Lookup "System.Nullable`1". + + * rootcontext.cs + (RootContext.ResolveCore): Resolve "System.Nullable`1". + +2005-02-15 Martin Baulig + + * generic.cs (ConstructedType.Constraints): Correctly check + constraints if the argument type is a type parameter; fixes + #72326. + +2005-02-02 Martin Baulig + + * delegate.cs (Delegate.DefineType): Report an internal error if + TypeManager.multicast_delegate_type is null. See bug #72015 for + details. + 2005-01-29 Miguel de Icaza + * pending.cs: Produce better code (no nops produced by using Ldarg + + value). + * pending.cs (PendingImplementation.DefineProxy): It was not `arg i - 1' it should be arg + 1.