2002-03-06 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / mcs / ChangeLog
index 6c4ce8894348f938e0b48e273e166ce261c63d37..4d12b33586c8fb41b3868d068df534dbb90f0c1b 100755 (executable)
@@ -1,3 +1,158 @@
+2002-03-06  Miguel de Icaza  <miguel@ximian.com>
+
+       * cs-parser.jay: Add opt_semicolon to the interface declaration.
+
+       * expression.cs: Pass location information to
+       ConvertImplicitStandard. 
+
+       * class.cs: Added debugging code to track return values from
+       interfaces. 
+
+2002-03-05  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs (Is.DoResolve): If either side of the `is' is an
+       interface, do not flag the warning.
+
+       * ecore.cs (ImplicitReferenceConversion): We need a separate test
+       for interfaces
+
+       * report.cs: Allow for --fatal to be used with --probe.
+       
+       * typemanager.cs (NoTypes): Move the definition for the empty Type
+       array here. 
+
+       * class.cs (TypeContainer.FindMembers): Also look for methods defined by
+       properties. 
+       (TypeContainer.DefineProxy): New function used to proxy to parent
+       implementations when implementing interfaces.
+       (TypeContainer.ParentImplements): used to lookup if our parent
+       implements a public function that is required by an interface.
+       (TypeContainer.VerifyPendingMethods): Hook this up.
+
+       * typemanager.cs (TypeManager, AddModule, AddAssembly): Make the
+       `modules' and `assemblies' arraylists into arrays.  We only grow
+       these are the very early start up of the program, so this improves
+       the speedof LookupType (nicely measured).
+
+       * expression.cs (MakeByteBlob): Replaced unsafe code with
+       BitConverter, as suggested by Paolo.
+
+       * cfold.cs (ConstantFold.Binary): Special case: perform constant
+       folding of string concatenation, but if either side is a string,
+       and the other is not, then return null, and let the runtime use
+       the concatenation on the string plus the object (using
+       `Object.ToString'). 
+
+2002-03-04  Miguel de Icaza  <miguel@ximian.com>
+
+       Constant Folding has been implemented now.
+       
+       * expression.cs (Unary.Reduce): Do not throw an exception, catch
+       the error instead on types that are not supported in one's
+       complement. 
+
+       * constant.cs (Constant and all children): New set of functions to
+       perform implict and explicit conversions.
+       
+       * ecore.cs (EnumConstant): Implement the new functions to perform
+       conversion by proxying to the child expression.
+
+       * codegen.cs: (ConstantCheckState): Constant evaluation has its
+       own separate setting that can not be turned off from the command
+       line using --unchecked or --checked and is only controlled using
+       the checked/unchecked statements and expressions.  This setting is
+       used by the constant folder to flag errors.
+
+       * expression.cs (CheckedExpr, UncheckedExpr): Set the
+       ConstantCheckState as well.   
+
+       During Resolve, they also have to flag the state, because the
+       constant folder runs completely in the Resolve phase.
+
+       * statement.cs (Checked, Unchecked): Set the ConstantCheckState as
+       well.
+
+2002-03-01  Miguel de Icaza  <miguel@ximian.com>
+
+       * cfold.cs: New file, this file contains the constant folder.
+       
+       * ecore.cs (IMemoryLocation.AddressOf): Now takes an extra
+       argument to track whether we are using the resulting address to
+       load or store a value and provide better error messages. 
+
+       (FieldExpr.Emit, FieldExpr.EmitAssign, FieldExpr.AddressOf): Use
+       new AddressOf arguments.
+
+       * statement.cs (Foreach.EmitCollectionForeach): Update
+
+       * expression.cs (Argument.Emit): Call AddressOf with proper
+       arguments to track usage.
+
+       (New.DoEmit): Call AddressOf with new arguments.
+
+       (Unary.Emit): Adjust AddressOf call.
+
+2002-03-01  Ravi Pratap  <ravi@ximian.com>
+
+       * cs-parser.jay (member_access): Change the case for pre-defined types
+       to use a MemberAccess instead of a SimpleName. Thanks to Felix again for 
+       this suggestion.
+
+       * class.cs (Operator::Emit): If we are abstract or extern, we don't have
+       a method body.
+
+       * attribute.cs (CheckAttribute, ApplyAttribute): Ensure that we treat operators
+       essentially like methods and apply attributes like MethodImplOptions to them too.
+
+       * ecore.cs (SimpleName.SimpleNameResolve): Perform a check on ec.TypeContainer.TypeBuilder
+       not being null.
+
+       * codegen.cs (EmitContext): The constructor now takes in an extra argument specifying the
+       DeclSpace as the distinction is important. We provide sane defaults as usually the TypeContainer
+       is the DeclSpace.
+
+       * Update code everywhere accordingly.
+
+       * ecore.cs : Change references to ec.TypeContainer to ec.DeclSpace where appropriate.
+
+       * cs-parser.jay (enum_declaration): Set the current namespace of the enum.
+
+2002-02-28  Ravi Pratap  <ravi@ximian.com>
+
+       * rootcontext.cs (LookupType): As we cycle through the chain of namespaces
+       try performing lookups against those instead of jumping straight into using
+       the 'using' clauses.
+
+       (ImplicitParent): Add. Thanks to Felix Arrese-Igor for this idea.
+
+       (LookupType): Perform lookups in implicit parents too.
+
+       * class.cs (GetInterfaceOrClass): Modify to perform the exact same lookup
+       sequence as RootContext.LookupType. 
+
+       * rootcontext.cs (NamespaceLookup): Split out code from LookupType which tries 
+       the various cases of namespace lookups into this method.
+
+2002-03-01  Miguel de Icaza  <miguel@ximian.com>
+
+       * cs-parser.jay: Add support for [Attribute ()] (empty arguments
+       in positional arguments)
+
+       * class.cs (Operator): Update the AllowedModifiers to contain
+       extern. 
+
+       * cs-parser.jay: Update operator declaration to allow for the
+       operator body to be empty.
+
+       * cs-tokenizer.cs: Added '\u' unicode support in strings and hex
+       values. 
+
+2002-02-27  Miguel de Icaza  <miguel@ximian.com>
+
+       * class.cs (Method.Emit): Label parameters.
+
+       * driver.cs: Return 1 or 0 as the program exit code.
+
 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
 
        * expression.cs: Special case the `null' object when trying to