Fix warning.
[mono.git] / mcs / gmcs / ChangeLog
index 399db4a5dd71cfde455c772c1af872732882b81a..6861abc931b4db6f391547e3bc0c3b5678ada882 100644 (file)
+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
+       for corlib.  Fixes #75691.
+
+2005-09-28  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76255.
+       * driver.cs: Fix compilation files with full root path.
+
+2005-09-25  Miguel de Icaza  <miguel@novell.com>
+
+       * report.cs (SymbolRelatedToPreviousError): Format the output so
+       it does not use an open parenthesis that is never closed. 
+
+       * driver.cs: Follow coding guidelines
+
+2005-09-18  Miguel de Icaza  <miguel@novell.com>
+
+       * driver.cs: Set InEmacs based on the environment variable EMACS. 
+
+       * location.cs (InEmacs): in this mode, do not report column
+       location as it confuses Emacs.
+
+2005-10-03  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader.Position): Don't error out when
+       the requested position is just beyond the end of the current
+       buffered data.
+
+2005-09-28  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader): Simplify drastically.  Don't
+       try to keep in sync with the byte count of the underlying Stream.
+       However, this limits us to a window size of 2048 characters: i.e.,
+       the maximum lookahead of our lexer/parser can be 2048 characters.
+
+2005-09-22  Martin Baulig  <martin@ximian.com>
+
+       * driver.cs: Removed a debugging FIXME.
+
+2005-09-21  Raja R Harinath  <rharinath@novell.com>
+
+       * cs-parser.jay (type_arguments): Add CS1644 check.
+       * decl.cs (DeclSpace.AddToContainer): Restore CS0694 check.
+
+2005-09-15  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile (PROGRAM): Make profile specific.
+       (gmcs.exe) [PROFILE=net_2_0]: Add utility rule to copy gmcs.exe to
+       the current directory.
+
+       Fix test-455.cs.
+       * expression.cs (Invocation.EmitCall): Remove optimization on
+       this_call since it doesn't handle 'this' being a value type.
+
+2005-09-05  Geoff Norton  <gnorton@customerdna.com>
+
+       * driver.cs: Ensure file handles are closed after parsing
+
+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  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (As.DoResolve): Use `probe_type.IsValueType'
+       instead of `TypeManager.IsValueType (probe_type)'; fixes #75668.
+
+       * cs-parser.jay (delegate_declaration): Small fix for #75852.
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * typemanager.cs: (IsUnmanagedType) : generic parameter is not allowed
+         to be a pointer type due to the spec 25.2, so check if declaring
+         type is generic type definition. Fixed bug #75772.
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       Fixed bug #75957.
+       * generic.cs : (TypeManager.IsEqual(Type,Type)): it should work when
+         both types are not defined by methods.
+       * expression.cs : (Invocation.IsApplicable): it should work when
+         the argument type is equal to the parameter type, not only when
+         ImplicitConversionExists() returns true.
+
+2005-09-02  Raja R Harinath  <rharinath@novell.com>
+
+       * attribute.cs (GetMarshal): Work even if "DefineCustom" is
+       internal.
+
+       Fix #75941.
+       * ecore.cs (SimpleNameResolve.DoSimpleNameResolve): Disable
+       flow-branching for LocalVariableReferences in case we were invoked
+       from a MemberAccess.
+       * expression.cs (LocalVariableReference.VerifyAssigned): New.
+       Carved out of ...
+       (LocalVariableReference.DoResolveBase): ... this.
+       (MemberAccess.Resolve): Do the check that was disabled during
+       SimpleNameResolve.
+
+2005-09-01  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs :
+         (PartialContainer.Create): check abstract/sealed/static strictly
+         but abstract/sealed can exist only at one side. Fixed bug #75883.
+
+2005-09-01  Kornél Pál  <kornelpal@hotmail.com>
+
+       Fix #75945.
+       * attribute.cs (Attribute.GetMarshal): If ArraySubType is not
+       specified, don't default to UnmanagedType.I4.
+
+2005-09-01  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : conditional operator should check possibly
+         incorrect assign expression. Fixed bug #75946.
+
+2005-08-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75934.
+       * anonymous.cs (ScopeInfo.MakeFieldName): New helper.
+       (ScopeInfo.EmitScopeType): Use it to construct field names from
+       names of captured locals.
+
+       Fix #75929.
+       * ecore.cs (BoxedCast.BoxedCast) [1-argument variant]: Remove.
+       * convert.cs (ImplicitReferenceConversion, TryImplicitIntConversion):
+       Pass 'target_type' to BoxedCast.  Don't default to 'object'.
+       (ExplicitConversion): Remove enum cases already handled by
+       implicit conversion.  Move implicit conversion check to the beginning.
+       * delegate.cs (DelegateCreation.ResolveMethodGroupExpr): Update.
+       * expression.cs (ArrayCreation.EmitDynamicInitializers):
+       Don't treat System.Enum as a struct.
+
+2005-08-30  Jb Evain  <jbevain@gmail.com>
+
+       * attribute.cs: handles as expression in parameters.
+
+2005-08-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75802.
+       * class.cs (TypeContainer.VerifyClsName): Don't use a
+       PartialContainer when verifying CLS compliance.
+       (AbstractPropertyEventMethod): Set Parent here, ...
+       (PropertyMethod): ... not here.
+
+2005-08-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * attribute.cs : escaped attribute name should not be allowed to be
+         resolved (e.g. @class as classAttribute). Fixed bug #75930.
+
+2005-08-29  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75927.
+       * convert.cs (ImplicitStandardConversionExists): Allow zero also
+       when converting a long constant to unsigned long.
+       * expression.cs (Invocation.OverloadResolve): Add sanity check to
+       detect where IsApplicable and VerifyArgumentsCompat disagree.
+
+2005-08-29  Raja R Harinath  <rharinath@novell.com>
+       and Carlos Alberto Cortez  <carlos@unixmexico.org>
+
+       Fix #75848.
+       * class.cs (TypeContainer.CanElideInitializer): New helper.
+       (TypeContainer.EmitFieldInitializers): Use it to determine if we
+       can safely emitting the initializer of a field.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * statement.cs : (Continue.Resolve()) Unlike break, continue is not
+         allowed inside a switch (without loop). Fixed bug #75433.
+
+2005-08-26  Kornél Pál  <kornelpal@hotmail.com>
+
+       * AssemblyInfo.cs: Using Consts.MonoVersion instead of MonoVersion.cs.
+       * mcs.exe.sources: Using Consts.MonoVersion instead of MonoVersion.cs.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : kinda reverting the default encoding changes (not exact 
+         revert since I noticed that "codepage:reset" might not work fine).
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs : (AbstractPropertyEventMethod) SetupName() now takes
+         Location. Now getter and setter store location correctly.
+         (errors/cs0111-12.cs now reports the expected location.)
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : Use default encoding on the environment.
+         Removed (now that) extra parameter for SeekableStreamReader.
+       * support.cs : (SeekableStreamReader) third .ctor() argument for
+         StreamReader is not required (always true). preamble size could
+         be acquired in simpler and safe way.
+
+2005-08-24  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-parser.jay: report CS0642 at warning level 3
+         and report CS0642 for an if else statement also
+         fixes bug #74745. Patch by John Luke (and a bit
+         modified by me).
+         Removed extra CS0642 warning check for "while",
+         "for" and "fixed".
+       * statement.cs: In Block.Resolve(), CS0642 check
+         is reimplemented to check a sequence of an empty
+         statement and a block.
+
+         Both fix bug #66777.
+
+2005-08-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (GetMethodObsoleteAttribute): Disabled obsolete properties
+       detection until I fix it.
+       
+       * cs-tokenizer.cs: Changed error message.
+       
+       * cs-parser.jay: Fixed 2 error locations.
+       
+       * ecore.cs (Error_TypeDoesNotContainDefinition): Share error message.
+       (PropertyExpr.Error_PropertyNotFound): First attempt to detect non C#
+       properties.
+       
+       * enum.cs (GetSignatureForError): Fixed.
+       
+       * expression.cs (Invocation.IsSpecialMethodInvocation): Improved special
+       method detection.
+       
+       * class.cs,
+       * typemanager.cs (RegisterProperty): Removed.
+       
+       * statement.cs (CheckInvariantMeaningInBlock): Changed error message.
+
+2005-08-24  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75874.
+       * expression.cs (ArrayAccess.EmitLoadOpcode): Emit ldelem.i for pointers.
+       (ArrayAccess.GetStoreOpcode): Return stelem.i for pointers.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : tiny fix is required for not warning positive ulong.
+         See test-441.cs.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : add CS0652 check for constant and integral
+         expression. Fixed bug #53974.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : in DoNumericPromotions(), check if there is implicit
+         conversion overload for string (to check CS0034). Fixed bug #52492.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-tokenizer.cs : Check newline in char constant. Fixed bug #75245.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ecore.cs : report location when it is *not* Null.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * codegen.cs,
+         ecore.cs,
+         flowanalysis.cs,
+         expression.cs:
+         Added OmitStructFlowAnalysis to EmitContext to handle CS0165 check
+         correctly. Fixed bug #75721.
+
+2005-08-23  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader.Position): Avoid an expensive
+       loop that performs 'min (pos, char_count)'.
+
+       Fix #75862.
+       * expression.cs (Unary.ResolveOperator): Don't discard implicit
+       converted value in Operator.OnesComplement.
+
+2005-08-22  Ben Maurer  <bmaurer@ximian.com>
+
+       * anonymous.cs: If the anon method is pulled into a helper class,
+       it needs to be `internal' not `private'. Fixes runtime behavior on
+       msft. bug #75704
+
+2005-08-17  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75803
+       * decl.cs (DeclSpace.VerifyClsCompliance): Skip when collision object
+       is a partial class.
+
+2005-08-16  Marek Safar  <marek.safar@seznam.cz>
+
+       The big constants rewrite
+       Fix #75746, #75685 and more
+       As a side effect saved 1MB for MWF ;-)
+       
+       * attribute.cs (GetAttributeArgumentExpression): Use ToType, GetTypedValue.
+       (GetMarshal, GetMethodImplOptions, GetLayoutKindValue): Values are not
+       enum based for corlib compilation.
+       
+       * cfold.cs (BinaryFold): Convert operand for enum additions. Fixed enum
+       subtractions.
+       
+       * class.cs (FixedField.Define): Use ResolveAsConstant.
+       
+       * const.cs (IConstant): Interface constants and enums.
+       (Const.ResolveValue): New method for constant resolvning.
+       (ExternalConstant): Constants from imported assemblies.
+       
+       * constant.cs (Constant.GetTypedValue): Used to get constant with forced
+       conversion; like enums.
+       (Constant.ToType): Converts this constant to different type.
+       (Constant.Increment): Adds 1.
+       
+       * convert.cs (ImplicitConversionRequired): Simplified.
+       
+       * cs-parser.jay: Create EnumMember directly.
+       
+       * decl.cs (MemberCore.CheckObsoleteness): Checks for ObsoleteAttribute presence.
+       
+       * doc.cs (GenerateEnumDocComment): Removed.
+       
+       * ecore.cs (Expression.ResolveAsConstant): New constant specific method.
+       (ConvertIntLiteral): Removed.
+       (FieldExpr.ResolveMemberAccess): Refactored to remove constant specific if(s).
+       
+       * enum.cs (EnumMember): Implement IConstant.
+       (Enum.IsValidEnumConstant): Removed.
+       (Enum.GetNextDefaultValue): Removed.
+       (Enum.FindMembers): Updated.
+       (Enum.GenerateDocComment): Iterate enum members.
+       
+       * expression.cs (Cast.TryReduce): Handle enums correctly.
+       (New.Constantify): Made public.
+       (MemberAccess.DoResolve): Removed contant specific if(s).
+       
+       * literal.cs (NullLiteral): Implement new abstract methods.
+       
+       * statement.cs (GotoCase.Resolve): Use new constant methods.
+       (SwitchLabel.ResolveAndReduce): Use new constant methods.
+       
+       * typemanager.cs (LookupEnum): Removed.
+       (IsEnumType): Fixed to work with corlib.
+       (RegisterConstant): Removed.
+       (LookupConstant): Removed.
+       (GetConstant): Changed to work with IConstant.
+
+2005-08-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : Fixed overflown (>255) column number.
+
+2005-08-03  Raja R Harinath  <rharinath@novell.com>
+
+       First cut of the qualified-alias-member feature.
+       * cs-tokenizer.cs (Tokenizer.is_punct): Recognize the double-colon
+       token.
+       * cs-parser.jay (DOUBLE_COLON): New token.
+       (namespace_or_type_name): Add rule for recognizing
+       qualified-alias-members.
+       (primary_expression): Likewise.
+       (element_access): Allow QualifiedAliasMember as a possible
+       type-bearing expression.
+       (local_variable_type, local_variable_pointer_type): Likewise.
+       * namespace.cs (NamespaceEntry.LookupAlias): New.  Looks up
+       aliases in the current and enclosing namespace declarations.
+       (NamespaceEntry.UsingAlias): Add CS0440 warning.
+       * decl.cs (MemberName.is_double_colon): New.
+       (MemberName.MemberName): Add new constructor for alias-member.
+       (MemberName.GetTypeExpression): Generate QualifiedAliasMember too.
+       * expression.cs (QualifiedAliasMember): New expression type.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : it borked when no argument was specified.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : tiny ToString() format fix.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * statement.cs : oops, it was missing.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       A set of fixes for precise line/column location.
+
+       * location.cs :
+         "token" field now holds a file/line "delta", a line number offset 
+         from the segment, and a column number. See also:
+         http://lists.ximian.com/pipermail/mono-devel-list/2004-
+         December/009508.html
+         Removed static IsNull. Use instance IsNull property instead.
+       * cs-tokenizer.cs :
+         For some tokens it stores Location. For Identifier it stores
+         LocatedToken which is a pair of string name and location.
+         Column numbers are adjusted only at getChar().
+       * report.cs :
+         Use Location.ToString() for reporting (it now contains column).
+       * cs-parser.jay :
+         Largely modified to use LocatedToken instead of
+         string (IDENTIFIER), and to acquire Location from some tokens.
+       * namespace.cs, decl.cs, ecore.cs, class.cs, delegate.cs,
+         iterators.cs, const.cs, anonymous.cs, tree.cs, enum.cs,
+         codegen.cs :
+         Now MemberName holds Location. DeclSpace.ctor() receives Location
+         as a parameter. Removed extra parameters to all derived classes.
+         Replaced Location.IsNull() with instance property.
+       * assign.cs, expression.cs :
+         Added .ctor() overload that omits Location.
+       * attribute.cs :
+         Added "nameEscaped" flag that indicates the identifier was escaped
+         in the source file. This fixes bug #57047.
+
+2005-09-02  Martin Baulig  <martin@ximian.com>
+
+       * class.cs: Make CS3005 a warning, not an error.
+
+2005-08-02  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AttributeTester.GetImportedIgnoreCaseClsType):
+       New method, looking for lo-case imported cls type.
+
+       * decl.cs (DeclSpace.VerifyClsCompliance): Check CS3005 for types
+       here.
+
+       * driver.cs: Removed VerifyTopLevelNameClsCompliance usage.
+
+       * enum (Enum.VerifyClsCompliance): Hardcode non-compliant types.
+
+       * typemanager.cs (TypeManager.AllClsTopLevelTypes): Renamed from
+       all_imported_types.
+       (TypeManager.LoadAllImportedTypes): Lo-case imported types.
+
+       Optimized to save 3.5 MB for SWF compilation.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (AddToTypeContainer): Use inheritance insted of if(s).
+       (PartialContainer.Create): Moved logic AddToContainer.
+       (PartialContainer.MarkForDuplicationCheck): Shares name.
+       
+       * decl.cs (DeclSpace.AddToContainer): Check name collisions at one
+       place.
+       
+       * namespace.cs (Namespace.AddDeclSpace): Lazy declspaces
+       initialization.
+       (Namespace.GetSignatureForError): New method.
+       
+       * tree.cs (Tree.RecordDecl): Moved to AddToContainer.
+       (RootTypes.AddToTypeContainer): se inheritance insted of if(s).
+
+2005-08-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75669.
+       * ecore.cs (Expression.MemberLookupFailed): Use queried_type for
+       member lookup rather than qualifier_type, since qualifier_type can
+       be null.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * enum.cs (Enum.VerifyClsName): Fixed to allow not CLSCompliant
+       enum member.
+
+2005-07-31  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs: Copy the local exception into the exception
+       captured local.  Fixes 75674
+
+2005-07-31  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #75658.
+       * expression.cs (Invocation.OverloadResolve): Don't report error
+       CS1501 if error CS1502 has been reported.
+       (New.DoResolve): Delegate CS1501 reporting to
+       Invocation.OverloadResolve.
+
+       Fix #75656.
+       * statement.cs (Block.CheckInvariantMeaningInBlock): Verify
+       invariant-meaning-in-block property in an enclosing block if
+       necessary.
+
+2005-07-29  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (SwitchLabel.ResolveAndReduce): Refactored.
+       (SwitchLabel.Erorr_AlreadyOccurs): Share error message.
+       (Switch.CheckSwitch): Just save 50kb for SWF.
+
+2005-07-27  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.AddField): Added
+       `AnonymousContainer am' argument; compute its toplevel scope if
+       it's not already computed.  Fixes #75649.
+
+2005-07-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75628.
+       * class.cs (Constructor.Emit): Reset block to null if the block
+       resolve fails.
+
+2005-07-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (TypeContainer.VerifyMembers): Be compatible in warning 169.
+
+2005-07-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodData.Define): Check whether accessor implementing
+       interface is public.
+
+       * driver.cs (Driver.parse): Try to be smart and check for `MZ' header.
+
+2005-07-22  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #57245
+       * namespace.cs (LookupType): Moved same type check to...
+       
+       * typemanager.cs (LookupTypeReflection): Don't allow to import more types
+       with the same name.
+
+2005-07-21  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (NamespaceLookupType): Avoid a string allocation when we
+       already found a typebuilder.
+       * class.cs (MethodCore.IsDuplicateImplementation): Compare
+       MemberNames, not strings.
+
+       * const.cs (Error_ExpressionMustBeConst): 
+       Rename from Error_EpressionMustBeConst.
+       * const.cs, class.cs, statement.cd: Update.
+
+2005-07-21  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #65573
+
+       * const.cs (Const.LookupConstantValue): Report missing contant expression
+       everytime.
+       (Error_EpressionMustBeConstant): Only one error method.
+
+       * class.cs, statement.c: Updated.
+
+2005-07-20  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Block.Flags): Add back HasVarargs.
+       (Block.flags): Make protected.
+       (ToplevelBlock.HasVarargs): Convert to a property that updates flags.
+
+       * typemanager.cs (types, typecontainers, user_types): Remove.
+       (UserTypes, TypeContainers): Likewise.
+       (HandleDuplicate, AddDelegateType, AddEnumType): Likewise.
+       (CleanUp, Reset): Update.
+       (AddUserType): Combine variants.  Now, only updates builder_to_declspace.
+       (GetNestedType): Use Type.GetNestedType.
+       (CoreLookupType): Take two arguments, the namespace and the
+       basename of the type.  Update to use the Namespace.Lookup
+       mechanism.
+       (InitEnumUnderlyingTypes, InitCoreTypes): Update.
+       (RealMemberLookup): Use IsNestedChildOf instead of playing with
+       string concatenation and substring matches.
+       * class.cs, enum.cs, delegate.cs: Update to changes.
+
+2005-07-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.Error_ConstantValueCannotBeConverted): Moved from
+       Expression and made virtual.
+
+       * convert.cs (ImplicitReferenceConversionExists): Skip for value types.
+       (ImplicitStandardConversionExists): Fixed `byte' typo ?
+
+       * ecore.cs (Expression.Error_ConstantValueCannotBeConverted): Moved.
+
+       * literal.cs (NullLiteral.Error_ConstantValueCannotBeConverted): Customize
+       error message.
+
+       * convert.cs, ecore.cs, enum.cs: Reflect Error_ConstantValueCannotBeConverted
+       change.
+
+2005-07-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #57707
+       * codegen.cs (AssemblyClass.ApplyAttributeBuilder): Check whether
+       AssemblyCultureAttribute is not used on executable.
+
+       * rootcontext.cs,
+       * typemanager.cs: Add System.Reflection.AssemblyCultureAttribute.
+
+2005-07-16  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #60638.
+       * expression.cs (Binary.Warning_UnintendeReferenceComparison):
+       New.  Reports CS0252/CS0253.
+       Mostly taken from preliminary patch by Duncak Mak.
+       (Binary.DoResolveOperator): Store results of operator lookup.
+       Use them to detect if we need to warn about unintended reference
+       comparisons.
+
+2005-07-15  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #72969.
+       * namespace.cs (Namespace.Lookup): Add back location parameter.
+       (Namespace.LookupType): Add CS0436 report.  Add location parameter.
+       * delegate.cs, ecore.cs, expression.cs: Update to changes.
+
+       * codegen.cs (EmitContext.DeclSpace): Make readonly.
+       * namespace.cs (Namespace.Lookup): Carve out type lookup into ...
+       (Namespace.LookupType): ... this.
+       (NamespaceEntry.GetUsingTable): Allocate only one zero-sized array
+       of namespaces.
+       * typemanager.cs (LookupTypeReflection): Remove buggy code that
+       purported to handle pointers.
+       (char_ptr_type, void_ptr_type): Use GetPointerType rather than
+       CoreLookupType.
+
+2005-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+       type as namespace.
+
+2005-07-15  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (Namespace.Lookup): Drop location parameter.
+       (NamespaceEntry.LookupAlias): Remove.  Merge into ...
+       (NamespaceEntry.Lookup): ... this.
+       (NamespaceEntry.Error_AmbiguousTypeReference):
+       Move here from DeclSpace.
+       (NamespaceEntry.LookupNamespaceOrType): Move support for dotted
+       names ...
+       * ecore.cs (TypeLookupExpression.DoResolveAsTypeStep): ... here.
+       * decl.cs (DeclSpace.ErrorAmbiguousTypeReference):
+       Move to NamespaceEntry.
+       * delegate.cs, expression.cs: Update to changes.
+
+2005-08-31  Martin Baulig  <martin@ximian.com>
+
+       Committing a patch from Atsushi Enomoto for #75850.
+
+       * statement.cs (Foreach.CollectionForeach.GetEnumeratorFilter):
+       Prefer a generic enumerator over a non-generic one.
+
+2005-08-26  Kornél Pál  <kornelpal@hotmail.com>
+
+       * AssemblyInfo.cs: Using Consts.MonoVersion instead of MonoVersion.cs.
+       * gmcs.exe.sources: Using Consts.MonoVersion instead of MonoVersion.cs.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : reverting default encoding change as well as mcs.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs, support.cs : merged r48826.
+         Marek Safer wrote:
+         > could you integrate your mcs changes to gmcs otherwise
+         > gmcs cannot compile some files.
+
+2005-08-20  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.CaptureThis): Create the topmost
+       scope if we don't already have it.
+
+       * expression.cs (Invocation.EmitCall): Use `ec.EmitThis ()' rather
+       than `ig.Emit (OpCodes.Ldarg_0)' to make it work inside iterators;
+       fixes #75867.
+
+2005-07-31  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs: Copy the local exception into the exception
+       captured local.  Fixes 75674
+
+2005-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+       type as namespace.
+
+2005-08-12  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Only search
+       for nested types here to avoid hitting the cache too early.
+
+2005-08-09  Miguel de Icaza  <miguel@novell.com>
+
+       * enum.cs: On the new compiler CLS error 3005 is now a warning not
+       an error. 
+
 2005-08-03  Martin Baulig  <martin@ximian.com>
 
        Make iterators in generic methods work; see gtest-191.cs.
        `TypeManager.IsEqual' instead of `Type.Equals'; fixes gtest-190.cs.
        (TypeManager.GetFullName_recursed): Improved.
 
+2005-07-27  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Fix #75417
+       * ecore.cs (Expression.IsAccessorAccessible): Change the check for
+       Private accessor case, using TypeManager.IsPrivateAccessible instead of
+       invocation_type == mi.DeclaringType, since the first one also checks
+       other condition used by generic instances.
+       
 2005-07-27  Martin Baulig  <martin@ximian.com>
 
        * anonymous.cs (CaptureContext.AddField): Added
        `AnonymousContainer am' argument; compute its toplevel scope if
        it's not already computed.  Fixes #75649.
 
+2005-07-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveAttributeType): Renamed from
+       CheckAttributeType and refactored.
+       (Attribute.ResolvePossibleAttributeType): Changed to reuse
+       ResolveAsTypeTerminal error handling.
+       (ResolveAsTypeTerminal): Introduced because of global attributes extra
+       handling.
+       (GetSignatureForError): Print errors in same way.
+
+       * class.cs,
+       * codegen.cs: Reflect attribute GetSignatureForError change.
+
+       * ecore.cs,
+       * expression.cs: Add silent parameter to ResolveAsTypeStep.
+
+       * namespace.cs (UsingEntry): Refactored to make fields private.
+
+       * assign.cs,
+       statement.cs: Error_UnexpectedKind has extra parameter.
+
+2005-07-14  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (IAlias): Remove.
+       * decl.cs (DeclSpace): Don't derive from IAlias.  Remove members
+       that implement the interface.
+       * namespace.cs (Namespace): Likewise.
+       (Namespace.declspaces): Renamed from 'defined_names'.
+       (Namespace.AddDeclSpace): Renamed from 'DefineName'.  Take a
+       DeclSpace instead of an IAlias.
+       * tree.cs (Tree.AddDecl): Update.
+
+2005-07-12  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Block.Flags); Remove HasVarargs.
+       (Block.HasVarargs): Move to ToplevelBlock.
+       (Block.ThisVariable, Block.AddThisVariable): Likewise.
+       (Block.Variables): Make protected.  Initialize variable hashtable
+       if necessary.
+       (Block.AddVariable): Update.
+       (Block.Resolve): Update to changes.
+       (ToplevelBlock.HasVarargs): New boolean.
+       (ToplevelBlock.ThisVariable): Move here from Block.
+       (ToplevelBlock.AddThisVariable): Likewise.
+       (ToplevelBlock.IsThisAssigned): New.  Forwards call to this_variable.
+       * expression.cs (This.ResolveBase): Update to changes.
+       (ArglistAccess.DoResolve): Likewise.
+
 2005-07-11  Marek Safar  <marek.safar@seznam.cz>
 
        Fix #75321