+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
(ConstraintChecker.CheckConstraints): If a type parameter has the
`struct' constraint, the type must be a non-nullable valuetype.
-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-02-10 Martin Baulig <martin@ximian.com>
* typemanager.cs