In mcs:
[mono.git] / mcs / gmcs / ChangeLog
index c18302063c9746a0659e908529c15c23254b5e95..fcd6a0e93556f5a7f30520a84e8852004d92497e 100644 (file)
@@ -1,5 +1,227 @@
+2006-05-16  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Goto.Resolve): Merge jump origins here ...
+       * flowanalysis.cs (FlowBranching.Label): ... rather than here.
+
+       * flowanalysis.cs (FlowBranching.LookupLabel): Move CS0159 check ...
+       (FlowBranchingToplevel.LookupLabel): ... here.  Add CS1632 check.
+       (FlowBranchingGoto.LookupLabel): New.  Handle back jumps.
+       (FlowBranchingBlock.LookupLabel): Call LabeledStatement.AddReference
+       here, ...
+       * statement.cs (Goto.Resolve): ... not here.
+       (Goto.Emit): Remove CS1632 check.
+
+2006-05-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Fixed type in the obsolete
+       error message.
+
+2006-05-11  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (UsageVector.MergeJumpOrigins): Kill.
+       (FlowBranchingBlock.Label): Use UsageVector.MergeOrigins.
+       (FlowBranchingException.Label): Likewise.
+
+       * flowanalysis.cs (MyBitVector.SetAll): New.  Sets all bits to the
+       given value.
+       (MyBitVector.Or): Use it to avoid losing information (Count).
+       (FlowBranching.MergeOrigins): Likewise.
+
+       * flowanalysis.cs (UsageVector.IsDirty): Remove.
+       (UsageVector.Parameters, UsageVector.ParameterVector): Likewise.
+       (UsageVector.Locals, UsageVector.LocalVector): Likewise.
+       (UsageVector.ToString): Simplify.
+       (UsageVector.MergeSiblings): Move here from ...
+       (FlowBranching.Merge): ... here.
+       (FlowBranchingToplevel.CheckOutParameters): Take an UsageVector,
+       not a MyBitVector.
+
+2006-05-10  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (UsageVector.MergeOrigins): Simplify, now that a
+       null bitvector is treated as all-true.
+
+       * flowanalysis.cs (MyBitVector.And, MyBitVector.Or): Make lazier.
+       (MyBitVector): Rationalize invariants.  'vector != null' implies
+       that we have our own copy of the bitvector.  Otherwise,
+       'InheritsFrom == null' implies all inherited bits are true.
+
+2006-05-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (LocalInfo): Add IsConstant.
+       (LocalInfo.DeclareLocal): Moved from EmitMeta and changed to don't emit
+       local variable for constants.
+
+2006-05-09  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (MyBitVector.Empty): New.
+       (MyBitVector): Don't allow InheritedFrom to be null.
+       (MyBitVector.And, MyBitVector.Or): Treat 'null' as all-ones.
+       (UsageVector, FlowBranching): Update to changes.
+
+       * flowanalysis.cs (FlowBranching.InTryWithCatch): Don't terminate
+       recursion.  The 'Parent == null' condition isn't sufficient for
+       anonymous methods.
+       (FlowBranching.AddBreakOrigin): Likewise.
+       (FlowBranching.AddContinueOrigin): Likewise.
+       (FlowBranching.AddReturnOrigin): Likewise.
+       (FlowBranching.StealFinallyClauses): Likewise.
+       (FlowBranching.MergeTopBlock): Move to FlowBranchingToplevel.
+       (FlowBranching.CheckOutParameters): Likewise.
+       (FlowBranchingToplevel): Terminate all the above recursions here.
+       (FlowBranchingToplevel.End): Rename from MergeTopBlock.
+       * codegen.cs (EmitContext.ResolveTopBlock): Update to changes.
+
+       * flowanalysis.cs (BranchingType.Toplevel): New.  Represents a
+       toplevel block.
+       (FlowBranchingToplevel): New.  Empty for now.
+       (FlowBranching.MergeTopBlock): Update.
+       * codegen.cs (EmitContext.ResolveTopBlock): Create a Toplevel
+       branching for the anonymous delegate.
+       (EmitContext.StartFlowBranching): Add ToplevelBlock variant.
+
+       * flowanalysis.cs (UsageVector.MergeOrigins): Reorganize.
+       (UsageVector.MergeJumpOrigins): Don't ignore current reachability
+       information at the start of the merge.  Reorganize.
+
+2006-05-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodData.Define): Method cannot implement interface accessor.
+
+2006-05-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (QualifiedAliasMember.ResolveAsTypeStep): Pass location
+       to newly introduced ctor.
+
+       * namespace.cs (Namespace.Error_NamespaceDoesNotExist): Moved an error
+       message to one place.
+       (GlobalRootNamespace.Error_NamespaceDoesNotExist): Custom message for
+       global namespace.
+
+2006-05-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * const.cs (Const.Error_ExpressionMustBeConstant): Better error message.
+
+       * ecore.cs (Expression.ResolveAsConstant): Updated.
+
+       * statement.cs (ResolveMeta): Updated.
+
+2006-05-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: __arglist cannot be used in initializer.
+
+2006-05-06  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77879
+       * namespace.cs (LocalAliasEntry.DoResolve): Don't allow to access nested
+       private types.
+
+2006-05-05  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (EmptyStatement.ResolveUnreachable): Override.
+       (LabeledStatement): Add 'name' parameter.
+       (LabeledStatement.Name, LabeledStatement.JumpOrigins): New.
+       (Block.AddLabel): Update to changes.
+       * cs-parser.jay (labeled_statement): Likewise.
+
+       * flowanalysis.cs (BranchingType.Labeled): New.
+       (UsageVector.MergeOrigins): Remove unused 'branching' argument.
+       (FlowBranchingLabeled): New.  Does nothing for now, but will
+       eventually handle 'goto' flows.
+       * codegen.cs (StartFlowBranching): Add new LabeledStatement variant.
+       * statement.cs (LabeledStatement.Resolve): Create a FlowBranching
+       that's terminated ...
+       (Block.Resolve): ... here.
+
+       * flowanalysis.cs (UsageVector.MergeFinally): Remove.
+       (UsageVector.MergeFinallyOrigins): Likewise.
+       (FlowBranching.InTryOrCatch): Likewise.
+       (FlowBranching.AddFinallyVector): Likewise.
+       (FlowBranchingException): Update to changes.
+
+       Fix #78290
+       * statement.cs (Return.Resolve): Move error checking to ...
+       * flowbranching.cs (FlowBranching.AddReturnOrigin): ... this.
+       (FlowBranchingException): Handle return origins like break and
+       continue origins.
+       (FlowBranching.UsageVector.CheckOutParameters): Remove.
+
+2006-05-04  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #76122
+       * class.cs (TypeContainer.FindMembers): Includes event method in the methods
+       filter.
+
+2006-05-04  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77543
+       * class.cs (MethodData.Define): Do public accessor check only when method
+       implements an interface.
+
+2006-05-04  Raja R Harinath  <rharinath@novell.com>
+
+       Remove special handling of 'break'
+       * flowanalysis.cs (Reachability): Remove all mention of 'breaks'.
+       (Reachability.Meet): Simplify.  Remove 'do_breaks' argument.
+       (UsageVector.Break): Remove.
+       (FlowBranching.Merge): Use 'Reachable.IsUnreachable' to determine
+       reachability.
+       (FlowBranchingBreakable.Merge): Don't ResetBreaks.
+
+       * statement.cs (Break.Resolve): Call UsageVector.Goto (), not
+       UsageVector.Breaks ().  Don't set NeedsReturnLabel.
+
+2006-05-03  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #75726
+       * pending.cs (PendingImplementation.BaseImplements): A found member cannot
+       be the interface member.
+
+2006-05-03  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #60069
+       * constant.cs (LongConstant.EmitLong): Fixed to catch also negative values
+       for emitting small (int) values.
+
 2006-05-03  Raja R Harinath  <rharinath@novell.com>
 
+       Fix #59427
+       * flowanalysis.cs (FlowBranchingException.Merge): Ensure
+       control-flow passes through the 'finally' after merging-in all the
+       control-flows from 'try' and the 'catch' clauses.
+
+       * flowanalysis.cs (FlowBranching.IsLoop): Remove.
+       (FlowBranching.IsTryOrCatch): Remove 'is_return' parameter.  It's
+       always true at the only non-recursive entry point.
+       (FlowBranching.CreateBranching) [BranchingType.Loop]: Return a
+       FlowBranchingBreakable.
+       (FlowBranchingLoop): Remove.
+       * statement.cs (Return.DoResolve): Update to changes.
+
+       Fix #76471, #76665
+       * flowanalysis.cs (FlowBranching.BranchingType.Embedded): New.
+       (FlowBranching.CreateBranching): Handle it: create a
+       FlowBranchingContinuable.
+       (FlowBranching.BreakCrossesExceptionBoundary): Remove.
+       (FlowBranching.AddContinueOrigin): Similar to AddBreakOrigin,
+       except that it handles the 'continue' command.
+       (FlowBranching.UsageVector.MergeOrigins): Rename from
+       MergeBreakOrigins.
+       (FlowBranchingContinuable): Similar to FlowBranchingBreakable,
+       except that it overrides AddContinueOrigin.
+       (FlowBranchingException): Override AddContinueOrigin, similar to
+       AddBreakOrigin.
+       * statement.cs (While.Resolve, Foreach.ArrayForeach.Resolve):
+       Create a new branching around the embedded statement.
+       (Do.Resolve, For.Resolve): Likewise.  Do reachability analysis for
+       control flow after the embedded statement.
+       (Continue.Resolve): Move all error checking to AddContinueOrigin.
+
+       * flowanalysis.cs (FlowBranching.IsSwitch): Remove.
+       (FlowBranching.CreateBranching) [BranchingType.Switch]: Create a
+       FlowBranchingBreakable.
+       (FlowBranchingSwitch): Remove.
+
        Fix test-503.cs
        * statement.cs (Break.Resolve): Simplify.  Move responsibility for
        error reporting to ...
 2006-05-01  Marek Safar  <marek.safar@seznam.cz>
 
        A fix for #77980
-       *flowanalysis.cs (UsageVector.IsAssigned): Add flag to ignore short path.
+       * flowanalysis.cs (UsageVector.IsAssigned): Add flag to ignore short path.
 
        * statement.cs (Block.UsageWarning): Uses newly introduced flag to detect
        whether field is really assigned.
 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.
+       * anonymous.cs (AnonymousMethod.DoResolve): Moved the check whether
+       anonymous method is allowed from AnonymousContainer here.
 
        * attribute.cs, codegen.cs (EmitContext): Add IsAnonymousMethodAllowed.
 
 2006-04-23  Marek Safar  <marek.safar@seznam.cz>
 
        A fix for #49011.
-       constant.cs (FloatConstant.Reduce): Add range checking for checked context.
+       constant.cs (FloatConstant.Reduce): Add range checking for checked context.
        (DoubleConstant.Reduce): Ditto.
 
 2006-04-23  Raja R Harinath  <rharinath@novell.com>
 
 2006-04-09  Marek Safar  <marek.safar@seznam.cz>
 
-       class.cs (MethodOrOperator): Moved common parts from method class.
+       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
 
 2006-04-09  Marek Safar  <marek.safar@seznam.cz>
 
-       (Constructor.Emit): Don't emit the attributes twice.
+       * class.cs (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
+       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
+       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.
 2006-04-08  Marek Safar  <marek.safar@seznam.cz>
 
        A fix for #76744.
-       ecore.cs (SimpleName.ResolveAsTypeStep): Report better error when type is
+       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
+       expression.cs (ArrayCreation.GetAttributableValue): Creates correctly typed
        array.
 
 2006-04-06  Marek Safar  <marek.safar@seznam.cz>