*** Merged revisions from mcs: 52077, 52086, 52089
[mono.git] / mcs / gmcs / ChangeLog
index 2e7a21c681a13b3818ac32bc0245423ca5e7d7f6..c67aac0e69332f8fd71431a2d699ed9e03fe9e08 100644 (file)
@@ -1,3 +1,405 @@
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs (AnonymousContainer): Don't crash when container
+       doesn't exist.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (Binary.DoResolve): Warn when comparing same
+       values.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76486.
+       * expression.cs (Binary.DoResolve): It looks like there are no
+       convetsion rules in enum context.
+
+2005-10-19  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Add support for extern alias qualifiers.
+       * typemanager.cs: Move some LookupTypeReflection code
+       to namespace.cs, to have cleaner code. Added some methods
+       to help us keep track of the extern aliased references.
+       * driver.cs: Add suport for extern alias assemblies on command
+       line and check for their warnings/errors. Also keep track of the
+       extern aliased assemblies.
+       * namespace.cs: Move the global functionality of Namespace
+       to GlobalRootNamespace/RootNamespace. Now the global namespace
+       is GlobalRootNamespace.Globa. Also the code moved from 
+       typemanager.cs lives in GlobalRootNames.cs/RootNamespace.cs. 
+       Finally added LocalAliasEntry (AliasEntry before) and
+       ExternAliasEntry, to handle alias statements.
+       * cs-parser.jay: Add support in the grammar for extern alias
+       statement.
+       * doc.cs, delegate.cs, expression.cs ecore.cs, symbolwriter.cs: 
+       Update callings to Namespace (now in GlobalRootNamespace).
+
+2005-10-25  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs (ImplicitTypeParameterConversion): Make base
+       interfaces actually work; fixes #76557.
+
+2005-10-25  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (GenericMethod.Define): Call TypeParameter.DefineConstraints() on
+       all the type parameters; fixes #76551.
+
+2005-10-25  Martin Baulig  <martin@ximian.com>
+
+       Fix #76472.
+
+       * generic.cs
+       (GenericMethod.ctor): Added `Expression return_type' and
+       `Parameters parameters' arguments.
+       (GenericMethod.DefineType): Call ResolveAsTypeTerminal() on the
+       parameter and return types to check their constraints if they're
+       generic types.
+
+       * codegen.cs (EmitContext.ResolvingGenericMethod): New public
+       boolean field.
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Don't check the
+       constraints of a generic type if `ec.ResolvingGenericMethod'.
+
+       * class.cs (MethodCore.DoDefineParameters): Set
+       `ec.ResolvingGenericMethod' if we're a generic method.
+       (MemberBase.MemberType): Likewise.
+
+2005-10-25  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * typemanager.cs (TypeManager): Added 
+       TypeManager.internals_visible_attr_type to cache
+       S.R.CompilerServices.InternalsVisibleToAttribute.
+
+       * codegen.cs (AssemblyClass): Added checks for 
+       InternalsVisibleToAttribute in new method 
+       CheckInternalsVisibleAttribute () and also cache the
+       AssemblyName in AssemblyClass.Name.
+       
+2005-10-24  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs
+       (TypeManager.ExpandInterfaces): Added overloaded version which
+       just takes a `Type[]' array.
+
+       * generic.cs
+       (Constraints.Resolve): Don't expand the interfaces here; ie. we
+       just use the interfaces which were explicitly specified and not
+       the interfaces they inherit.  Fixes #76482.
+       (TypeParameter.FindMembers): Expand the interfaces here.
+
+2005-10-21  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (Constraints.Resolve): Also resolve the actual types here.
+       (Constraints.ResolveTypes): Just check the constraints here.
+       Fixes #76363; see gtest-218.cs.
+
+2005-10-21  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs
+       (Convert.ImplicitTypeParameterConversion): Use a `ClassCast'
+       instead of a `BoxedCast'; fixes gtest-217.cs.
+
+2005-10-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * generic.cs : (ConstructedType.CheckConstraints) warn CS0310 when
+         1) "new()" is specified as generic parameter constraint and 2) the
+         type is TypeBuilder and 3) the type is abstract even if it has a
+         default .ctor(). Now errors/gcs0310-3.cs is correctly rejected.
+
+2005-10-20  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (GenericConstraints.TypeParameter): New public property.
+       (TypeParameter.ctor): Also take a `DeclSpace' argument.
+       (TypeParameter.DeclSpace): New public property.
+       (TypeParameter.DefineType): Inflate the constraints if our
+       `DeclSpace' is an `Iterator'.   
+
+2005-10-19  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs, decl.cs : (MemberCache.FindMemberToOverride) added 
+         GenericMethod argument to compare methods' generic type arguments.
+         Fixed bug #76382.
+
+2005-10-19  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineType): Only use ResolveAsTypeStep(),
+       not ResolveType() when resolving the base type, so we're not
+       checking the constraints here.
+       (TypeContainer.ResolveType): Call ResolveType() on our base_type
+       if we have any.
+
+2005-10-19  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstructedType.CheckConstraints): Committing
+       untested fix for #76441.
+
+2005-10-18  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76371.
+       * class.cs (TypeContainer.DefineType): Move updating of
+       topological sort earlier in the code.
+       * decl.cs (DeclSpace.ResolveBaseTypeExpr): Don't use TypeBuilder.
+
+2005-10-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76273.
+       * cfold.cs (BinaryFold): Reduce constant in enum conversion.
+       
+       * constant.cs (Constant.TryReduce): Moved from Cast class.
+       (Reduce): Made little bit more OO and fixed missing conversions.
+       
+       * ecore.cs (Reduce): Implemented.
+       (Binary.EnumLiftUp): New method to upgrade values to enum values.
+       
+       * literal.cs (Reduce): Implemented.
+       
+       * class.cs: Reverted Miguel's wrong commit.
+
+2005-10-14  Miguel de Icaza  <miguel@novell.com>
+
+       * ecore.cs (GetMemberType): Report the correct mapping for the MemberCore
+
+2005-10-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-parser.jay, expression.cs : CS0214 was missing error location
+         for constants. Fixed bug #76404.
+
+2005-10-10  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (PropertyExpr.Emit): Use Invocation.EmitCall to emit
+       InstanceExpression.
+       (PropertyExpr.EmitCall): Likewise.
+       * expression.cs (Invocation.EmitArguments): Handle case where
+       arguments == null.
+       (Invocation.EmitCall): Avoid allocating temporary variable if
+       there are no arguments.
+
+2005-10-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76370.
+       * convert.cs (ExplicitConversionCore): Fixed object->enum
+       conversion.
+
+2005-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76323.
+       * convert.cs (ImplicitConversionStandard): Move conversion of
+       void* to arbitrary pointer types ...
+       (ExplicitConversionStandard): .. here.
+       * ecore.cs (Expression.Error_ValueCannotBeConverted): Fix CS0266
+       error to always print typenames.
+
+2005-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       * convert.cs (GetConversionOperator): Rename from
+       GetConversionOperators.  Move operator selection code from ...
+       (UserDefinedConversion): ... here.
+
+2005-10-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * convert.cs (ExplicitConversionCore): Removed duplicate enum
+       conversion.
+
+2005-10-05  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (Assign.DoResolve): Error method changed.
+
+       * cfold.cs (DoConstantNumericPromotions): Error method changed.
+       
+       * const.cs (ResolveValue): Reset in_transit immediately.
+       
+       * constant.cs: Error method changed.
+       
+       * convert.cs: Removed useless location parameter.
+       (ExplicitNumericConversion): Don't do double enum check.
+       (ExplicitConversionCore): Renamed from ExplicitConversion.
+       (ExplicitUnsafe): Extracted from ExplicitConversion.
+       (ExplicitConversion): Uses for error reporting.
+       
+       * ecore.cs (Error_ValueCannotBeConverted): More logic for more
+       error messages.
+       (ResolveBoolean): Uses common error method.
+       (CastToDecimal): Get rid of ec.
+       (CastFromDecimal): Optimized.
+       (ConvCast): Get rid of ec.
+       
+       * enum.cs (ResolveValue): Reset in_transit immediately.
+       (Emit): Return after first error.
+       
+       * expression.cs: Convert changes.
+       
+       * literal.cs: Error method changed.
+       
+       * statement.cs: Error method changed.
+
+2005-10-06  Raja R Harinath  <rharinath@novell.com>
+
+       Fix gtest-131.cs and gtest-211.cs.
+       * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality):
+       Only emit code for a label if it is used.  Unreachable code can
+       violate ECMA evaluation stack invariants.
+
+2005-09-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs: Implemented ExprClassName.
+       
+       * assign.cs (Assign.DoResolve): Don't chrash when type is not
+       delegate.
+       
+       * attribute.cs (ResolveArguments): Enabled MethodImplOptions
+       check.
+       
+       * class.cs (StaticClass.DefineContainerMembers): Report protected
+       members as error.
+       
+       * codegen.cs: if(ed) PRODUCTION.
+       
+       * convert.cs (Error_CannotImplicitConversion): Better error
+       distinction.
+       
+       * cs-parser.jay: More error checks.
+       
+       * cs-tokenizer.cs (consume_identifier): Fixed Miguel's revert.
+       
+       * driver.cs (CSCParseOption): Enabled wrong option check.
+       
+       * ecore.cs (Expression.ExprClassName): Turned to property.
+       (MemberExpr.CheckIntermediateModification): For checking boxed
+       value types     modification.
+       
+       * statement.cs (Fixed.Resolve): Expression type must be
+       convertible to fixed type.
+       (CollectionForeach.GetEnumeratorFilter,TryType):
+       Small refactoring for easier error checking.
+
+2005-09-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.Resolve): Check Obsolete attribute for
+       attributes.
+       
+       * class.cs (GeneratedBaseInitializer): New class for customization
+       compiler generated initializers.
+       (MemberBase.DoDefine): Check Obsolete attribute here.
+       (FieldMember.DoDefine): Ditto.
+       
+       * const.cs (ExternalConstant.CreateDecimal): Builder for decimal
+       constants.
+       
+       * decl.cs (MemberCore.EmitContext): Returns valid current ec.
+       (MemberCore.GetObsoleteAttribute): Removed argument.
+       (MemberCore.CheckObsoleteness): Obsolete attributes are hierarchic.
+       (MemberCore.CheckObsoleteType): New helper.
+       
+       * delegate.cs,
+       * enum.cs,
+       * statement.cs: Updates after MemberCore changes.
+       
+       * ecore.cs (TypeExpr.ResolveType): Check type obsoleteness here.
+       (FieldExpr.ResolveMemberAccess): Fixed decimal constants checks.
+       
+       * expression.cs (ComposedCast.DoResolveAsTypeStep): Don't check
+       obsolete attribute for compiler construct.
+       (As.DoResolve): Cache result.
+       
+       * iterators.cs (Define_Constructor): Use GeneratedBaseInitializer.
+
+2005-10-01  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (Probe): instead of having a "Type probe_type"
+       keep the extra information as a TypeExpr probe_type_expr since the
+       "As" operator needs to perform some type checks.
+
+       * (As.DoResolve): If the type is a type parameter, ensure that it
+       is constrained by a class.
+
+2005-09-22  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs (Lock): Use the TemporaryVariable class instead of
+       manually using local variables as those do not work when variables
+       are captured.
+
+       * ecore.cs: Moved the TemporaryVariable class from being a nested
+       class inside Foreach to be a public class that can be employed in
+       other places. 
+
+2005-09-19  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: interface_accessors replaced by
+       accessor_declarations.
+
+       * ecore.cs, literal.cs, statement.cs: NullLiteral holds null
+       location.
+       
+       * statement.cs (GotoCase.Resolve): Convert null constant to
+       null case.
+       (SwitchLabel.ResolveAndReduce): Ditto.
+       (SwitchLabel.NullStringCase): Custom null stamp.
+       (Switch.SimpleSwitchEmit): Fix from NullLiteral to NullStringCase.
+       
+       typemanager.cs (CSharpSignature): Don't skip first argument
+       for full names.
+
+2005-09-16  Marek Safar  <marek.safar@seznam.cz>
+
+       * cfold.cs, constant.cs, convert.cs, ecore.cs,
+       expression.cs, iterators.cs, literal.cs: Store constants and
+       literals location.
+       
+       * class.cs (MemberBase.ShortName): Pass location.
+       
+       * cs-parser.jay: Some location fixes.
+       
+       * ecore.cs (Expression.Location): Made virtual.
+
+2005-09-27  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #72930.
+       * const.cs (Const.ResolveValue): Check for assigning non-null
+       value to reference type.
+
+2005-09-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76133.
+       * expression.cs (This.VerifyFixed): In a value type T, the type of
+       'this' is T&, iow, 'this' is either an out or ref parameter.  In a
+       value type R, 'this' is treated as a value parameter.
+
+2005-09-05  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (Cast.TryReduce): Only reduce to an EnumConstant
+       if the underlying types are the same, otherwise we need to produce
+       code that will do the proper cast.
+
+       This was exposed by Marek's constant rewrite which produced
+       invalid code for the call site:
+
+       enum X : long { a }
+       void Method (X v) {}
+
+       Method ((X) 5)
+
+       This fixes test-49.cs
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * attribute.cs : (Attribute.IsValidArgumentType): array of string/
+         Type/Object should be allowed as well. Fixed bug #75968.
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : (Binary.DoResolve): when one is enum constant and
+         another is constant 0, then return enum one *as enum type*.
+         Fixed bug 74846.
+
+2005-10-04  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (PropertyExpr.ResolveAccessors): Cosmetic fix; make the
+       `SetMemberIsUsed()' work for generics, too.
+
 2005-10-04  Martin Baulig  <martin@ximian.com>
 
        * expression.cs (DelegateInvocation.EmitStatement): Make this work