2002-08-01 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / mcs / ChangeLog
index a90c6469d835dc087e497a3cacadeb76c5a5ea17..00cceed479137417f47c07b0386658771d8dac9c 100755 (executable)
@@ -1,3 +1,108 @@
+2002-08-01  Miguel de Icaza  <miguel@ximian.com>
+
+       * statement.cs (Block.Emit): Do not emit the dead-code warnings if
+       we reach an EmptyStatement.
+
+       (Catch.DoResolve, Throw.DoResolve): Throwing the System.Exception
+       is also fine.
+
+       * expression.cs (Binary.ResolveOperator): Check error result in
+       two places.
+
+       use brtrue/brfalse directly and avoid compares to null.
+
+2002-08-02  Martin Baulig  <martin@gnome.org>
+
+       * class.cs (TypeContainer.Define): Define all nested interfaces here.
+       Fixes bug #28407, added test-155.cs.
+
+2002-08-01  Martin Baulig  <martin@gnome.org>
+
+       * class.cs (Event.EmitDefaultMethod): Make this work with static
+       events.  Fixes #28311, added verify-3.cs.
+
+2002-08-01  Martin Baulig  <martin@gnome.org>
+
+       * statement.cs (ForeachHelperMethods): Added `enumerator_type' and
+       `is_disposable' fields.
+       (Foreach.GetEnumeratorFilter): Set `hm.enumerator_type' and
+       `hm.is_disposable' if we're using the collection pattern.
+       (Foreach.EmitCollectionForeach): Use the correct type for the
+       enumerator's local variable, only emit the try/finally block if
+       necessary (fixes #27713).
+
+2002-08-01  Martin Baulig  <martin@gnome.org>
+
+       * ecore.cs (Expression.report118): Renamed to Error118 and made
+       it public static.
+
+       * statement.cs (Throw.Resolve): Check whether the expression is of
+       the correct type (CS0118) and whether the type derives from
+       System.Exception (CS0155).
+       (Catch.Resolve): New method.  Do the type lookup here and check
+       whether it derives from System.Exception (CS0155).
+       (Catch.CatchType, Catch.IsGeneral): New public properties.
+
+       * typemanager.cs (TypeManager.exception_type): Added.
+
+2002-07-31  Miguel de Icaza  <miguel@ximian.com>
+
+       * driver.cs: Updated About function.
+
+2002-07-31  Martin Baulig  <martin@gnome.org>
+
+       Implemented Control Flow Analysis.
+
+       * codegen.cs (EmitContext.DoFlowAnalysis): New public variable.
+       (EmitContext.CurrentBranching): Added.
+       (EmitContext.StartFlowBranching): Added.
+       (EmitContext.EndFlowBranching): Added.
+       (EmitContext.KillFlowBranching): Added.
+       (EmitContext.IsVariableAssigned): Added.
+       (EmitContext.SetVariableAssigned): Added.
+       (EmitContext.IsParameterAssigned): Added.
+       (EmitContext.SetParameterAssigned): Added.
+       (EmitContext.EmitTopBlock): Added `InternalParameters ip' argument.
+       Added control flow analysis stuff here.
+
+       * expression.cs (Unary.DoResolve): If the operator is Oper.AddressOf,
+       resolve the expression as lvalue.
+       (LocalVariableReference.DoResolve): Check whether the variable has
+       already been assigned.
+       (ParameterReference.DoResolveLValue): Override lvalue resolve to mark
+       the parameter as assigned here.
+       (ParameterReference.DoResolve): Check whether the parameter has already
+       been assigned.
+       (Argument.Resolve): If it's a `ref' or `out' argument, resolve the
+       expression as lvalue.
+
+       * statement.cs (FlowBranching): New class for the flow analysis code.
+       (Goto): Resolve the label in Resolve, not in Emit; added flow analysis.
+       (LabeledStatement.IsDefined): New public property.
+       (LabeledStatement.AddUsageVector): New public method to tell flow
+       analyis that the label may be reached via a forward jump.
+       (GotoCase): Lookup and resolve the label in Resolve, not in Emit; added
+       flow analysis.
+       (VariableInfo.Number): New public field.  This is used by flow analysis
+       to number all locals of a block.
+       (Block.CountVariables): New public property.  This is the number of
+       local variables in this block (including the locals from all parent
+       blocks).
+       (Block.EmitMeta): Number all the variables.
+
+       * statement.cs: Added flow analysis support to all classes.
+
+2002-07-31  Martin Baulig  <martin@gnome.org>
+
+       * driver.cs: Added "--mcs-debug" argument if MCS_DEBUG is defined.
+       To get debugging messages, compile mcs with /define:MCS_DEBUG and
+       then use this argument.
+
+       * report.cs (Report.Debug): Renamed to conditional to "MCS_DEBUG".
+
+       * makefile.gnu (MCS_FLAGS): Include $(MCS_DEFINES), the user may
+       use this to specify /define options.
+
 2002-07-29  Martin Baulig  <martin@gnome.org>
 
        * statement.cs (Fixed): Moved all code that does variable lookups