2006-04-28 Marek Safar <marek.safar@seznam.cz>
[mono.git] / mcs / gmcs / ChangeLog
index 8934ee3abafcacd02052787dec1906df8110f6f3..d2debc4744cad9b95bf89dc622f70c2a1843982f 100644 (file)
+2006-04-28  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78049
+       *class.cs (Method.FindOutBaseMethod): Base method cannot be property method.
+
+2006-04-28  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (FlowBranching.MergeTopBlock): Don't create a
+       dummy UsageVector.
+
+       * flowanalysis.cs (UsageVector.MergeChild): Change FlowBranching
+       argument to two arguments: an usage-vector and a bool.  Move call
+       to FlowBranching.Merge () ...
+       (FlowBranching.MergeChild, FlowBranching.MergeTopBlock): ... here.
+
+       * flowanalysis.cs (UsageVector.MergeChild): Move special-case
+       handling of loop and switch reachability to ...
+       (FlowBranchingLoop.Merge, FlowBranchingSwitch.Merge): ... these.
+
+2006-04-27  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (FlowBranching.InLoop): Move special-case
+       handling to FlowBranchingLoop.InLoop.
+       (FlowBranching.InSwitch): Likewise, to FlowBranchingSwitch.
+
+2006-04-26  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78115
+       anonymous.cs.cs (AnonymousMethod.DoResolve): Moved the check whether
+       anonymous method  is allowed from AnonymousContainer here.
+
+       * attribute.cs, codegen.cs (EmitContext): Add IsAnonymousMethodAllowed.
+
+2006-04-24  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78156
+       * flowanalysis.cs (MyBitVector.Or): Add null check on argument.
+
+2006-04-23  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #49011.
+       constant.cs (FloatConstant.Reduce): Add range checking for checked context.
+       (DoubleConstant.Reduce): Ditto.
+
+2006-04-23  Raja R Harinath  <rharinath@novell.com>
+
+       * expression.cs (LocalVariableReference.DoResolveBase): Simplify.
+       Remove 'lvalue_right_side' argument.  Move parts to ...
+       (LocalVariableReference.ResolveLocalInfo, LocalVariable.DoResolve)
+       (LocalVariable.DoResolveLValue): ... these.
+
+2006-04-21  Raja R Harinath  <rharinath@novell.com>
+
+       Fix cs1655.cs
+       * codegen.cs (EmitContext.InRefOutArgumentResolving): Remove.
+       * expression.cs (EmptyExpression.LValueMemberOutAccess): New.
+       (LocalVariableReference.DoResolveBase): Use it to implement new
+       CS1655 check.
+       (IndexerAccess.DoResolveLValue): Handle LValueMemberOutAccess.
+       (Argument.Resolve): Simplify.  Move CS1510 check ...
+       * ecore.cs (Expression.ResolveLValue): ... here.
+       (UnboxCast.DoResolveLValue): Handle LValueMemberOutAccess.
+       (PropertyExpr.DoResolveLValue): Likewise.
+       (FieldExpr.Report_AssignToReadonly): Likewise.
+       (FieldExpr.DoResolve): Add 'out_access' argument.  Use
+       LValueMemberAccess or LValueMemberOutAccess on instance depending
+       on it.
+       (FieldExpr.DoResolveLValue): Pass 'out_access' argument to
+       DoResolve as appropriate.
+
+2006-04-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75800
+       * expression.cs (Invocation.VerifyArgumentsCompat): Don't try
+       implicit conversions on 'out' and 'ref' arguments.
+
+       * expression.cs (Invocation.VerifyArgumentsCompat): Reorganize to
+       improve clarity.  Remove dead code.
+
+       Fix #66031
+       * statement.cs (Block.UsageWarning): Allow VariableInfo to be null.
+       (Catch.Resolve): Resolve VarBlock if it exists.
+
+2006-04-19  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs (Foreach.EmitFinally): Do not emit the enumerator
+       twice, this was some residual code, the enumerator was emitted
+       properly in the two branche of if later.
+
+       Fixes #78031
+       
+       Thanks to Martin for finding the source of the problem
+       
+2006-04-19  Raja R Harinath  <rharinath@novell.com>
+
+       * expression.cs (Cast.ResolveLValue): Remove.  The result of a
+       cast is never an lvalue.
+       (Cast.DoResolve, Cast.ResolveRest): Combine.
+       (Argument.Emit): Simplify slightly.  Move 'Expr is
+       IMemoryLocation' check ...
+       (Argument.Resolve): ... here.
+       (Argument.Error_LValueRequired): Remove.  Inline into only user.
+
+       Simplifications.  Fix cs0191-2.cs
+       * ecore.cs (FieldExpr.DoResolve): Move handling of CS0192, CS0198,
+       CS1649 and CS1651 to ...
+       (FieldExpr.Report_AssignToReadonly): ... this.  Simplify by moving
+       the actual selection of the error code and message to a lookup
+       table.  Add a dummy return value to simplify callsites.
+       (FieldExpr.ResolveLValue): Don't allow a constructor to write to
+       readonly fields of other instances of the same type.  Move CS0197
+       warning from ...
+       * expression.cs (Argument.Resolve): ... here.  Simplify code.
+       Ensure that ec.InRefOutArgumentResolving is only set during LValue
+       resolution of an out or ref argument.  The code simplification
+       above uses this invariant.
+
+2006-04-18  Raja R Harinath  <rharinath@novell.com>
+
+       Possibly fix #77752.  Fix cs1690-[4-7].cs.
+       * ecore.cs (Expression.CheckMarshalByRefAccess): Renamed from
+       CheckMarshallByRefAccess.  Drop parameter.
+       (FieldExpr.CheckMarshalByRefAccess): Update.  Change CS1690 to a
+       warning.
+       (FieldExpr.DoResolve): Call CheckMarshalByRefAccess on
+       InstanceExpression.
+       * report.cs (AllWarnings): Add CS1690.
+       * expression.cs (Argument.Resolve): Use EmptyExpression.OutAccess
+       for ref access too.
+       (LocalVariableReference.DoResolveBase): Update.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       class.cs (MethodOrOperator): Moved common parts from method class.
+       detect obsolete attributes.
+       (Method.Define): Simplified as it reuses code from base.
+       (Constructor.ValidAttributeTargets): Fixed issue found during
+       refactoring.
+       (Destructor.ValidAttributeTargets): Fixed issue found during
+       refactoring.
+       (Operator): Finished refactoring set off by #78020. Operator class is now
+       ordinary method class.
+
+       * anonymous.cs: Updated.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       (Constructor.Emit): Don't emit the attributes twice.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       class.cs (Operator.Emit): Extracted code from MethodData to correctly
+       detect obsolete attributes.
+       (Method.CreateEmitContext): Moved to MethodOrOperator.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78048.
+       class.cs (TypeContainer.MemberCoreArrayList.DefineContainerMembers): Throw
+       customized exception to make crash detection easier.
+       (MethodOrOperator): Started to work on new base class for methods and
+       operators.
+       (Method): Derives from MethodOrOperator.
+       (Constructor.Emit): Emits its own attributes.
+       (AbstractPropertyEventMethod.Emit): Ditto.
+       (Operator): Derives from MethodOrOperator, will refactor fully in extra
+       patch.
+       (Operator.Emit): It's temporary more tricky than should be.
+       
+       * doc.cs (GetMethodDocCommentName): Updated after operator changes.
+
+       * report.cs (InternalErrorException): Add ctor with inner exception.
+
+2006-04-08  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #76744.
+       ecore.cs (SimpleName.ResolveAsTypeStep): Report better error when type is
+       only not visible.
+
+2006-04-07  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77916.
+       expression.cs (ArrayCreation.GetAttributableValue): Creates correctly typed
+       array.
+
+2006-04-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Class.ApplyAttributeBuilder): Report an error when ComImport
+       attribute is present and Guid not.
+       (Interface.ApplyAttributeBuilder): Ditto.
+
+       * attribute.cs: Add error message.
+
+2006-04-06  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78020.
+
+       * attribute.cs (Attribute.AttachTo): The attribute can have multiple
+       sources (it's composite) so hold them in extra array as they are used in
+       Emit phase only. It worked in the previous versions by mistake.
+       (Attribute.Emit): Emit attribute for more owners when exist.
+
+       * codegen.cs, class.cs: Updated to don't re-attach attribute twice as now
+       it has now different behaviour.
+
+2006-04-04  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.IsDefaultInitializer): New method.
+
+       * class.cs: Updated.
+
+       * expression.cs (ArrayCreation.CheckIndices): Add an optimization to don't
+       re-initialize default values. It saves KBs almost for every assembly.
+       Thanks Zoltan for the idea.
+       (ArrayCreation.ResolveInitializers): Renamed from ValidateInitializers.
+       (ArrayCreation.DoResolve): Resolve only once.
+       (ArrayCreation.Emit): Emit static initializer only when it is faster.
+       (ArrayCreation.GetAttributableValue): Cope with optimized values.
+
+2006-04-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * report.cs (Warning, Error): Add 0-, 1-, and 2- argument specializations.
+       From #77961.
+
+2006-04-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (Assign.DoResolve): Assignment to same variable can occur
+       in an embedded statement too.
+
+2006-04-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77929
+       * typemanager.cs (IsNestedChildOf): Drop generic arguments before
+       testing.
+
+       Fix #77958
+       * statement.cs (Switch.EmitObjectInteger) [ulong]: Remove bad cast.
+
+       Fix #77962
+       * report.cs (SymbolRelatedToPreviousError): Drop generic type
+       arguments before checking whether a type is reflected or not.
+
+       Fix #77954
+       * expression.cs (Invocation.IsApplicable): Ensure a generic method
+       definition doesn't take part in overload resolution.
+       (Invocation.IsParamsMethodApplicable): Likewise.
+       (Invocation.OverloadResolve): When replacing a reflected override
+       method with its base definition, ensure that type arguments are
+       applied.
+
+2006-04-01  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77966.
+
+       * class.cs (TypeContainer.AddPartial): Don't report an error when modifier
+       was not specified.
+
+       * modifiers.cs: Add DEFAULT_ACCESS_MODIFER.
+
+2006-03-31  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (LocalTemporary): Don't require ILGenerator in the resolve
+       phase.
+
+       * anonymous.cs, assign.cs, ecore.cs, expression.cs: Updated after
+       LocalTemporary change.
+
+       * class.cs (ClassOrStruct.DefineDefaultConstructor): Moved from
+       TypeContainer.
+       (ClassOrStruct.DefineFieldInitializers): Implemented static field
+       initializers optimization.
+       (ClassOrStruct.TypeAttr): Moved from modifiers.
+       (Constructor.CheckBase): Don't crash when static ctor has parameters.
+       (FieldBase.ResolveInitializer): Resolves initializer.
+       (FieldBase.HasDefaultInitializer): New property.
+
+       * cs-parser.jay: Removed message.
+
+       * expression.cs (CompilerGeneratedThis): New specialization.
+
+       * modifiers.cs (TypeAttr): Moved to ClassOrStruct.TypeAttr
+
+2006-03-28  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay, cs-tokenizer.cs: On demand Stack allocation.
+
+2006-03-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (Expression.ResolveAsConstant): Clean up, enum constants should
+       be now EnumConstants only.
+
+2006-03-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs, driver.cs: Reset more caches.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-tokenizer.cs (adjust_real): Uses float.Parse for float literals.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.Reduce): Replaced EmitContext with single bool
+       for easier reuse. Updated all overrides.
+       (IntegralConstant): New base class for all integral constants.
+       (IntegralConstant.Error_ValueCannotBeConverted): When assigned value if out
+       of the constant range, report custom error.
+       (UIntConstant.Reduce): Fixed uint conversion.
+
+       * ecore.cs, literal.cs: Reduce updates.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #75813.
+
+       * class.cs (Constructor.Define): Removed extra if for default ctors.
+       A patch from Atsushi Enomoto.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveConstructor): Conversion was moved to
+       GetAttributableValue.
+
+       * constant.cs (Constant.GetAttributableValue): Does implicit conversion
+       when required.
+
+       * convert.cs (ImplicitConversionRequired): Error message moved to
+       DoubleLiteral.
+
+       * ecore.cs (Expression.GetAttributableValue): Add type parameter for
+       automatic implicit conversion of an output value.
+       (EnumConstant.GetAttributableValue): Don't reduce the enum constants.
+
+       * expression.cs (ArrayCreation.GetAttributableValue): Add element type
+       conversion.
+       (TypeOf.GetAttributableValue): Add extra handling for object type.
+
+       * literal.cs (DoubleLiteral.Error_ValueCannotBeConverted): Doubles can have
+       special error message.
+
+2006-03-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Constructor.Emit): Don't crash when struct ctor is
+       InternalCall.
+       (Constructor.ApplyAttributeBuilder): Transform MethodImplAttribute to be
+       compatible with MS runtime.
+
+2006-03-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveConstructor): Check for an invalid
+       attribute arguments here.
+
+       * class.cs (Indexer.Define): The check was moved to attribute class.
+
+2006-03-21  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (StringConcat.Append): Reverted back to no warning state.
+
+2006-03-21  Marek Safar  <marek.safar@seznam.cz>
+
+       * const.cs (Error_ConstantCanBeInitializedWithNullOnly): Share a message.
+
+       * statement.cs (Block.ResolveMeta): Look for wrong object constants in
+       the blocks too.
+
+2006-03-21  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc-bootstrap.cs : fix build.
+
+2006-03-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (StringConcat.Append): Issue a warning when empty string
+       is going to append.
+
+2006-03-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (CompoundAssign.ResolveSource): Removed.
+
+       * attribute.cs (ResolvePossibleAttributeType): Updated after MemberAccess
+       clean up.
+
+       * class.cs (TypeContainer.FindMethods): Removed.
+       (TypeContainer.CheckMemberUsage): Made static.
+
+       * codegen.cs (GetAssemblyName): Uses Length for empty string test.
+
+       * constant.cs (CheckRange): Removed unused type argument.
+       (CheckUnsigned): Removed unused type argument.
+
+       * cs-parser.jay: Updated after MemberAccess clean up.
+       Uses Length for empty string test.
+
+       * cs-tokenizer.cs: Uses Length for empty string test.
+       (IsCastToken): Made static.
+       (is_hex): Made static.
+       (real_type_suffix): Made static.
+
+       * decl.cs (SetupCache): Made static.
+       (OnGenerateDocComment): Removed unused ds argument.
+
+       * delegate.cs (VerifyDelegate): Removed unused argument.
+
+       * doc.cs: Uses Length for empty string test.
+
+       * driver.cs: Uses Length for empty string test.
+
+       * enum.cs (IsValidEnumType): Made static
+
+       * expression.cs (EnumLiftUp): Removed unused argument.
+       (ResolveMethodGroup): Ditto.
+       (BetterConversion): Ditto.
+       (GetVarargsTypes): Ditto.
+       (UpdateIndices): Ditto.
+       (ValidateInitializers): Ditto.
+       (MemberAccess.ctor): Ditto.
+       (GetIndexersForType): Ditto.
+
+       * flowanalysis.cs: (MergeFinally): Removed unused argument.
+
+       * iterators.cs: Updated after MemberAccess clean up.
+
+       * location.cs: Uses Length for empty string test.
+
+       * namespace.cs: Uses Length for empty string test.
+
+        * report.cs (CheckWarningCode): Made static.
+
+       * statement.cs (LabeledStatement): Removed unused argument.
+
+       * typemanager.cs (FilterNone): Removed.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * codegen.cs (EmitContext.TestObsoleteMethodUsage): Removed as it become
+       obsolete.
+
+       * class.cs: Updated.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay.cs: __arglist is not allowed for delegates.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77816.
+
+       * anonymous.cs.cs (AnonymousMethod): Add host to allow access to 
+       host container.
+       (AnonymousMethod.ImplicitStandardConversionExists): New method.
+       (AnonymousMethod.Compatible): Moved parameter resolving to DoResolve.
+       Add more error reporting; Fixed issue with params.
+
+       * convert.cs (ImplicitStandardConversionExists): Returned conversion check.
+
+       * cs-parser.jay: AnonymousMethod requires host container.
+
+       * delegate.cs (NewDelegate.DoResolve): Updated after Compatible changes.
+
+2006-03-18  Raja R Harinath  <harinath@gmail.com>
+
+       * class.cs: Change 'TypeContainer ds' constructor argument to
+       'DeclSpace parent'.  Some classes were missed below due to
+       different naming convention.
+
+       * class.cs (MemberCore.Parent): Delete.  This makes the
+       ParentContainer changes below enforceable by the compiler.
+
+       Treat pointers to enclosing declaration space as 'DeclSpace', not
+       'TypeContainer'.
+       * class.cs, const.cs, delegate.cs, enum.cs, iterator.cs: Change
+       'TypeContainer parent' constructor argument to 'DeclSpace parent'.
+
+       * statement.cs (LocalInfo..ctor): Use DeclSpace argument instead
+       of TypeContainer.
+       (Block.AddThisVariable): Likewise.
+       * class.cs (MethodData.Define, MethodData.Emit): Likewise.
+       (AbstractPropertyEventMethod.Emit): Likewise.
+       (AbstractPropertyEventMethod.EmitMethod): Likewise.
+       (GetMethod.Define, SetMethod.Define): Likewise.
+       (PropertyMethod.Define, DelegateMethod.Define): Likewise.
+       (DelegateMethod.EmitMethod): Likewise.
+
+       Fix regression test-partial-13.cs.
+       Rationalize use of PartialContainer.  Ensure that the partial
+       class semantics can be tied to type-correctness, i.e., any
+       violation will cause a compile error.
+       * class.cs, const.cs: Access all fields that belong to class
+       TypeContainer via ParentContainer.  Arguments of EmitContexts and
+       Resolve()-like functions still use 'Parent'.
+
+       * class.cs (SourceMethod): Use DeclSpace, not TypeContainer.
+       (*.CreateEmitContext): Change TypeContainer argument to DeclSpace.
+       (PropertyMethod.CheckModifiers): Remove unused argument.
+       * codegen.cs (EmitContext..ctor): Change TypeContainer argument to
+       DeclSpace.
+
+2006-03-28  Raja R Harinath  <rharinath@novell.com>
+
+       * decl.cs (DeclSpace.LookupGeneric): Update to changes.
+
+2006-03-17  Raja R Harinath  <harinath@gmail.com>
+
+       Make semantics of PartialContainer simpler.
+       * decl.cs (DeclSpace.IsPartial): Remove.
+       * class.cs (TypeContainer.IsPartial): Likewise.
+       (TypeContainer..ctor): Set PartialContainer to point to self.
+       (TypeContainer.GetClsCompliantAttributeValue): Don't use IsPartial.
+       (TypeContainer.FindNestedType): Likewise.
+       (MemberCore.ParentContainer): Simplify.  Remove deprecation.
+
+2006-03-17  Marek Safar  <marek.safar@seznam.cz>
+
+       * typemanager.cs.cs (GetInterfaces): Don't recreate 0-sized arrays.
+
+2006-03-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (FieldMember.Emit): ParentContainer is real parent for partial
+       classes.
+
+2006-03-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Operator.Define): An error for base conversion was not
+       reported correctly.
+
+2006-03-13  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77593, #77574.
+
+       * class.cs (MethodCore.CheckBase): Another if for operator.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77822.
+
+       * expression.cs (VerifyArgumentsCompat): Reverted to double error
+       reporting, it's more tricky than I thought.
+
+2006-03-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs (AnonymousMethod.Compatible): Don't crash when parameters
+       were not resolved
+
+       * delegate.cs (Delegate.GetInvokeMethod): Use emitcontext free MemberLookup.
+       (DelegateCreation.ImplicitStandardConversionExists): New method for just
+       conversion test.
+       
+       * ecore.cs (Expression.MemberLookup): Don't ask for emitcontext when it's
+       not needed.
+
+2006-03-04  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77353.
+
+       * class.cs (SetMethod.DefineParameters): Uses new parameters type ctor.
+       (Event.Define): ditto
+       (SetIndexerMethod.DefineParameters): Uses Parameters.MergeGenerated.
+
+       * delegate.cs (Delegate.Define): Uses Parameters.MergeGenerated.
+       Removed redundant code and set NewSlot for Invoke method too.
+
+       * parameter.cs (Parameters.ctor): Add custom, type ctor.
+       (Parameters.MergeGenerated): New method. Use this method when you merge
+       compiler generated argument with user arguments.
+
+2006-03-03  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (ResolveAsTypeTerminal): Removed.
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Make virtual to allow
+       specialization for predefined types; 30% speed up.
+       Finally placed obsolete check to right place.
+       (Expression.ResolveType): Removed.
+
+       * enum.cs, expression.cs, parameter.cs, statement.cs, typemanager.cs:
+       Updated after ResolveType was removed.
+
+       * expression.cs (Cast.ctor): Check void cast.
+       (Binary.ResolveAsTypeTerminal): Is never type.
+       (Conditional.ResolveAsTypeTerminal): Is never type.
+
+       * rootcontext.cs (ResolveCore): Set base type to simplify some code later.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * rootcontext.cs (ResolveCore): Removed System.INullableValue.
+
+2006-03-23  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Is.DoResolve, As.DoResolve): Perform a dynamic
+       type check if either of the types is an open generic type.
+
+2006-03-23  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs
+       (Convert.ExplicitTypeParameterConversion): New method; implement
+       explicit type parameter conversions.
+
+2006-03-23  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs (Convert.ImplicitTypeParameterConversion): Do not
+       blindly allow all conversions if we do not have any constraints.
+
+2006-02-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.PosArguments, Attribute.NamedArguments): Use
+       these two separated members to simplify the code.
+       (Attribute.Resolve): Refactored to use new fields and methods.
+       (Attribute.ResolveConstructor): Extracted from ResolveArguments and
+       implemented obsolete attribute checking.
+       (Attribute.ResolveNamedArguments): Extracted from ResolveArguments and
+       implemented obsolete checking again. It look line never ending quest ;-)
+       (GlobalAttribute.ResolveConstructor): Need to override as the rest.
+
+       * cfold.cs (BinaryFold): TryReduce throws an exception to indicate error.
+
+       * constanct.cs (TryReduce): Throws OverflowException to indicate error.
+
+       *class.cs (Property.Define): Add RegisterProperty call.
+
+       * cs-parser.jay: Replaced ArrayList with fixed array for attribute
+       argument groups (only 2).
+
+       * ecore.cs (Expression.GetAttributableValue): New virtual method used for
+       encoding expression to arguments.
+       (Expression.ExprClassToResolveFlags): Just turned to property.
+
+       * expression.cs (ArrayCreation.ValidateInitializers): Slightly optimized.
+       (ArrayCreation.GetAttributableValue): Renamed from EncodeAsAttribute and
+       optimized as well as implemented support for zero-length attributes.
+
+       * typemanager.cs (TypeManager.RegisterProperty, TypeManager.GetProperty):
+       Add caching of PropertyInfo's.
+
+2006-02-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * delegate.cs (DelegateCreation.ResolveMethodGroupExpr): Don't report
+       error multiple times.
+
+2006-02-25  Marek Safar  <marek.safar@seznam.cz>
+
+       New partial class implementation.
+       A fix for #77027, #77029, #77403
+
+       * attribute.cs (Attributable): Made attributes protected.
+
+       * class.cs (TypeContainer): Add PartialContainer and partial_parts as
+       the replacements of ClassPart and PartialContainer.
+       (TypeContainer.AddClassOrStruct): Call RecordDecl here.
+       (TypeContainer.AddInterface): Ditto.
+       (TypeContainer.AddPartial): The main method for partial classes. It checks
+       for errors and merges ModFlags and attributes. At the end class is added to
+       partial_parts list.
+       (TYpeContainer.DefineDefaultConstructor): Checks whether default ctor is
+       required here.
+       (TypeContainer.GetClsCompliantAttributeValue): Cope with partial class too.
+       (TypeContainer.GetNormalPartialBases): Resolves base classes and interfaces
+       from the rest of partial classes.
+       (TypeContainer.GetClassBases): Simplified.
+       (TypeContainer.DefineTypeBuilder): New method, mostly extracted from
+       DefineType.
+       (TypeContainer.DefineDefaultConstructor): Is used by derived classes.
+       (TypeContainer.HasExplicitLayout): Uses Flags now.
+       (PartialContainer): Removed.
+       (ClassOrStruct.AddToContainer): Moved enclosing member name check here.
+       (StaticClass): Was merged with Class.
+       (Class.GetClassBases): class and static class bases are verified here.
+       (Class.TypeAttr): Added static attributes when class is static.
+       (Struct.RegisterFieldForInitialization): Moved from TypeContainer.
+       (MemberBase): In some cases we need to call parent container for partial
+       class. It should be eliminated but it's not easy now.
+
+       * cs-parser.jay: Replaced all PartialContainer with AddPartial.
+
+       * decls.cs (MemberCore.DocComment): Introduced new property as is used by
+       partial classed to accumulate class comments.
+       (MemberCore.GetClsCompliantAttributeValue): Moved from TypeContainer.
+
+       * doc.cs (GenerateTypeDocComment): Partial classes clean up.
+
+       * driver.cs (MainDriver): Tree.GetDecl was removed.
+
+       * modifiers.cs (Modifiers): Add partial modifier.
+
+       * tree.cs (Tree.decl): Removed.
+       (RootTypes): Started to use this class more often for root types
+       specializations.
+
+2006-03-23  Raja R Harinath  <rharinath@novell.com>
+
+       * generic.cs (TypeParameter.UpdateConstraints): Update
+       'constraints' if null.
+
+2006-02-22  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77615
+
+       * attribute.cs (AttributeTester.GetCoClassAttribute): Don't crash when
+       external interface does not have an attribute.
+
+2006-02-22  Marek Safar  <marek.safar@seznam.cz>
+
+       Another prerequisites for new partial classs implementation.
+       
+       * attribute.cs (Attribute.Equal): Implemented.
+       (Attribute.Emit): Changed as attributes can be applied more than twice.
+       (Attributes.Emit): Check for duplicate attributes here.
+
+       * class.cs, decl.cs, delegate.cs, doc.cs, enum.cs: Don't pass DeclSpace
+       as a parameter, clean-up.
+
+2006-02-11  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77485
+
+       * class.cs (TypeContainer.DefineType): Cannot use ResolveType because it
+       contains obsolete attribute check which can in some cases look for base
+       type of current class which is not initialized yet.
+       (TypeContainer.BaseType): Replacement of ptype.
+
+       * decl.cs (MemberCore.CheckObsoleteType): Reuse existing code.
+
+2006-02-11  Marek Safar  <marek.safar@seznam.cz>
+
+       First of prerequisites for new partial classs implemention.
+       
+       * attribute.cs (Attributable): Extended by ResolveContext;
+       Attributes finally have correct context for resolving in all cases.
+       (AttachTo): Attribute owner is assigned here.
+
+       * codegen.cs (IResolveContext): Introduce new interface to hold
+       all information needed in resolving phase.
+       (EmitContext): Implements IResolveContext; more clean-up needed here.
+       
+       * decl.cs (MemberCore): Implemented IResolveContext.
+
+       * anonymous.cs, attribute.cs, class.cs, codegen.cs, const.cs,
+       decl.cs, ecore.cs, enum.cs, expression.cs, iterators.cs, namespace.cs,
+       parameter.cs, statement.cs, tree.cs, typemanager.cs:
+       Refactored to use new IResolveContext instead of EmitContext; cleanup
+
+2006-03-22  Raja R Harinath  <rharinath@novell.com>
+
+       Support ParameterDefaultValueAttribute in gmcs.  Also applied to
+       mcs to keep code differences small.
+       * attribute.cs (Attribute.GetParameterDefaultValue): New.
+       * typemanager.cs (parameter_default_value_attribute_type): New.
+       * parameter.cs (Parameter.ApplyAttributeBuilder): Use them.  Add
+       CS1908 check.
+
+2006-03-22  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (Nullable.NullableLiteral): Derive from `NullLiteral'.
+
+       * convert.cs
+       (Convert.TypeParameter_to_Null): Create a `Nullable.NullableLiteral'
+       instead of the normal `NullLiteral'.
+
+2006-03-21  Martin Baulig  <martin@ximian.com>
+
+       Fix #77583.
+       * generic.cs (TypeManager.InferType): If `pt' is a generic
+       parameter, don't check whether `pt == at'.
+
+2006-03-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77852
+       * generic.cs (Constraints.Resolve): Change argument to IResolveContext.
+       (TypeParameter.Resolve): Update to change.
+       (ConstraintChecker.CheckConstraints): Resolve type-argument
+       constraints before use.
+
+2006-03-16  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (ConstraintChecker.HasDefaultConstructor): If we're a TypeBuilder
+       and don't have any instance constructors, also lookup in the base class.
+       (TypeManager.IsNullableValueType): New public method.
+
+       * typemanager.cs (TypeManager.MemberLookup_FindMembers): Clear the
+       `BindingFlags.DeclaredOnly' flag and set `used_cache'.
+       (TypeManager.TryGetBaseDefinition): Use DropGenericMethodArguments().
+
+       * expression.cs (Unary.DoResolve): Use TypeManager.IsNullableValueType()
+       instead of just TypeManager.IsNullableType() to determine whether
+       a lifted operator exists.
+       (UnaryMutator.DoResolve): Likewise.
+       (Conditional.DoResolve): Likewise.
+       (Binary.DoResolve): A lifted operator only exists if both operands
+       are valuetypes and at least one of them is a nullable type.
+
+2006-03-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * iterator.cs : yield break is allowed in try statement which has
+         catch clauses. Fixed bug #77767.
+
+2006-03-12  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.ArrayContainsMethod): Use a new
+       private IsSignatureEqual() to compare types; see the comment in
+       that method; fixes #77674.
+
+2006-03-10  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (Expression.ResolveAsTypeStep): Remove 1-argument wrapper.
+       (Expression.ResolveAsTypeTerminal): Likewise.
+       * class.cs, decl.cs, delegate.cs, ecore.cs: Update to changes.
+       * expression.cs, generic.cs, iterators.cs: Likewise.
+       * parameter.cs, statement.cs, typemanager.cs: Likewise.
+
+2006-03-09  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.HasDefaultConstructor): Call
+       TypeManager.DropGenericTypeArguments() on the `atype'; fixes #77548.
+
+2006-03-09  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.AddressOf): Don't emit the instance if the
+       `prepared' flag is set.
+
+       * generic.cs (LiftedBinaryOperator): Don't allow `||' or `&&' anymore.
+       (LiftedBinaryOperator, LiftedUnaryMutator): Fix a few nullable
+       issues; see gtest-254.cs.
+
+2006-03-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.InferType): Allow infering
+       `IEnumerable<T>' with an array of T; see gtest-251.cs.
+
+2006-03-06  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.InferType): Fix gtest-250.cs.
+
+       * typemanager.cs
+       (TypeManager.IsSubclassOf): Also check the base class.
+
+       * expression.cs
+       (Invocation.IsAncestralType): Use TypeManager.IsSubclassOf();
+       fixes gtest-249.cs.
+
+2006-03-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77679.
+       * expression.cs (ParameterReference.DoResolveBase): Change return
+       type to bool.
+       (ParameterReference.DoResolve, ParameterReference.DoResolveLValue):
+       Update.
+
+       Fix #77628.
+       * ecore.cs (PropertyExpr.InstanceResolve): Fix CS1540 check.
+
+       Fix #77642.
+       * typemanager.cs (GetFullNameSignature): Don't nullref on
+       protected accessors.
+
+2006-02-16  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.GetGenericFieldDefinition): New public method; use it
+       instead of the `FieldInfo.Mono_GetGenericFieldDefinition()' icall.
+
+2006-02-14  Martin Baulig  <martin@ximian.com>
+
+       * *.cs: Use `Type.IsGenericType' instead of `Type.IsGenericInstance'.
+
+2006-02-14  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.DropGenericMethodArguments): New public method; don't
+       use GetGenericMethodDefinition() on something which is not a
+       generic method.
+
+2006-02-14  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (ConstraintChecker.CheckConstraints): If a type parameter has the
+       `struct' constraint, the type must be a non-nullable valuetype.
+
+2006-02-10  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs
+       (TypeManager.IsOverride): Make this work for instantiated methods
+       in a generic class; fixes #77509.
+       (TypeManager.ExpandInterfaces): Use TypeManager.GetInterfaces()
+       rather than calling it directly; fixes #77488.  
+
+2006-02-08  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.CheckConstraints): Move the error
+       reporting into CheckConstraint() so we can use the correctly
+       instantiated type.
+
+2006-02-08  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (BaseAccess): Add support for generic methods.
+
+       * ecore.cs (MethodGroupExpr.ResolveGeneric): Propagate `IsBase' to
+       the new MethodGroupExpr.
+
+2006-02-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.CheckConstraints): Interfaces are
+       also reference types; fixes #77483.
+
+2006-02-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.IsGenericMethod): We now return whether something is
+       an instantiated generic method (and not a generic method def).
+       (TypeManager.IsGenericMethodDefinition): New public method.
+
+       * typemanager.cs
+       (TypeManager.CSharpSignature): Only include type arguments for
+       "real" generic methods, not for any instantiated method.
+       (TypeManager.GetMethodName): Likewise, but also allow generic
+       method definitions here.
+
+2006-02-06  Miguel de Icaza  <miguel@novell.com>
+
+       * codegen.cs (EmitScopeInitFromBlock): check here the
+       capture_context, there is no need to make two calls to the
+       EmitContext. 
+
+       * anonymous.cs: Add some debugging messages that might help me
+       track other instances of this problem in the future (the
+       regression of test 467).
+
+       * cs-parser.jay: track the variable block, as we need to initalize
+       any captured variables declared in this block for the "catch"
+       portion of the "Try" statement.
+
+       * statement.cs (Try.Emit): If the "Catch" has a VarBlock, emit any
+       scope initialization for captured variables. 
+
+       Also, move the emit for the variables after the block location has
+       been marked.
+
+2006-02-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (PropertyExpr.FindAccessors): Just made flags const.
+       
+2006-02-06  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineType): If we're a struct, pass
+       `TypeManager.value_type' as parent type to
+       ModuleBuilder.DefineType().  Fixes #77358.      
+
+2006-02-02  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (CaptureContext.EmitInitScope): I was wrong in the
+       commit yesterday, the initialization for the roots is necessary.
+       What is not necessary is the scope activation.
+
+2006-02-02  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (PropertyExpr.DoResolveLValue): Add CS0206 check.
+       * expression.cs (IndexerAccess.DoResolveLValue): Add CS1612 and
+       CS0206 checks.
+       (Argument.Resolve): Remove CS0206 checks.
+
+2006-02-01  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (CaptureContext.EmitInitScope): Do not emit the
+       scopes for all the roots, the scopes will now be emitted when the
+       Blocks are entered. [This change was wrong, fixed on 2006-02-02]
+
+       (CaptureContext.EmitScopeInitFromBlock): Simply emit the ScopeInfo
+       code.  This reduces a lot of existing cruft.
+       
+       * statement.cs (Block.Emit): Call EmitScopeInitFromBlock here, so
+       that the ScopeInfo is generated as we enter the scope, not at the
+       time of use, which is what we used to do before.
+
+       * codegen.cs (EmitScopeInitFromBlock): New routine, this is called
+       every time a Block is about to be emitted if we have a
+       CaptureContext. 
+
+2006-02-01  Raja R Harinath  <rharinath@novell.com>
+
+       * codegen.cs (AssemblyClass.Emit): Emit RuntimeCompatibility
+       attribute for mscorlib too.
+
+       * typemanager.cs (NoTypes, NoTypeExprs): Remove.
+       (Reset): Update.
+       * *.cs: Use Type.EmptyTypes instead of TypeManager.NoTypes.
+
+       * typemanager.cs (cons_param_array_attribute): Make private.
+       (Reset): Set it to null.
+       (InitCoreHelpers): Don't initialize it.
+       (ConsParamArrayAttribute): New.  Initialize it as needed.
+       * parameter.cs (ParamsParameter.ApplyAttribute): Update to change.
+
+2006-01-31  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs: There might be errors reported during the
+       selection of applicable methods.  If there are errors, do not
+       continue execution as it will lead the compiler to crash.
+
+2006-01-30  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs: Member access is not allowed on anonymous
+       methods.  Fixes #77402.
+
 2006-01-30  Raja R Harinath  <rharinath@novell.com>
 
        Fix #77401