2002-09-18 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / mcs / ChangeLog
index a28554971351296e166230a374ff41f1a744d5f2..f0f215e0b29361a80ad450fa87eda798648775ed 100755 (executable)
@@ -1,5 +1,186 @@
+2002-09-18  Miguel de Icaza  <miguel@ximian.com>
+
+       * ecore.cs (SimpleName.DoResolveType): During the initial type
+       resolution process, when we define types recursively, we must
+       check first for types in our current scope before we perform
+       lookups in the enclosing scopes.
+
+       * expression.cs (MakeByteBlob): Handle Decimal blobs.
+
+       (Invocation.VerifyArgumentsCompat): Call
+       TypeManager.TypeToCoreType on the parameter_type.GetElementType.
+       I thought we were supposed to always call this, but there are a
+       few places in the code where we dont do it.
+
+2002-09-17  Miguel de Icaza  <miguel@ximian.com>
+
+       * driver.cs: Add support in -linkres and -resource to specify the
+       name of the identifier.
+
+2002-09-16  Miguel de Icaza  <miguel@ximian.com>
+
+       * ecore.cs (StandardConversionExists): Sync with the conversion
+       code: allow anything-* to void* conversions.
+
+       (FindMostSpecificSource): Use an Expression argument
+       instead of a Type, because we might be handed over a Literal which
+       gets a few more implicit conversions that plain types do not.  So
+       this information was being lost.
+
+       Also, we drop the temporary type-holder expression when not
+       required.
+
+2002-09-17  Martin Baulig  <martin@gnome.org>
+
+       * class.cs (PropertyBase.CheckBase): Don't check the base class if
+       this is an explicit interface implementation.
+
+2002-09-17  Martin Baulig  <martin@gnome.org>
+
+       * class.cs (PropertyBase.CheckBase): Make this work for indexers with
+       different `IndexerName' attributes.
+
+       * expression.cs (BaseIndexerAccess): Rewrote this class to use IndexerAccess.
+       (IndexerAccess): Added special protected ctor for BaseIndexerAccess and
+       virtual CommonResolve().
+
+2002-09-16  Miguel de Icaza  <miguel@ximian.com>
+
+       * enum.cs (LookupEnumValue): Use the EnumConstant declared type,
+       and convert that to the UnderlyingType.
+
+       * statement.cs (Foreach.Resolve): Indexers are just like variables
+       or PropertyAccesses.
+
+       * cs-tokenizer.cs (consume_string): Track line numbers and columns
+       inside quoted strings, we were not doing this before.
+
+2002-09-16  Martin Baulig  <martin@gnome.org>
+
+       * ecore.cs (MethodGroupExpr.DoResolve): If we have an instance expression,
+       resolve it.  This is needed for the definite assignment check of the
+       instance expression, fixes bug #29846.
+       (PropertyExpr.DoResolve, EventExpr.DoResolve): Likewise.
+
+2002-09-16  Nick Drochak  <ndrochak@gol.com>
+
+       * parameter.cs: Fix compile error.  Cannot reference static member
+       from an instance object.  Is this an mcs bug?
+
+2002-09-14  Martin Baulig  <martin@gnome.org>
+
+       * decl.cs (MemberCache.SetupCacheForInterface): Don't add an interface
+       multiple times.  Fixes bug #30295, added test-166.cs.
+
+2002-09-14  Martin Baulig  <martin@gnome.org>
+
+       * statement.cs (Block.Emit): Don't emit unreachable code.
+       (Switch.SimpleSwitchEmit, Switch.TableSwitchEmit): Check for missing
+       `break' statements.
+       (Goto.Emit, Continue.Emit): Set ec.Breaks = true.
+
+2002-09-14  Martin Baulig  <martin@gnome.org>
+
+       * parameter.cs (Parameter.Attributes): Make this work if Modifier.ISBYREF
+       is set.
+
+2002-09-14  Martin Baulig  <martin@gnome.org>
+
+       * typemanager.cs (TypeManager.IsNestedChildOf): This must return false
+       if `type == parent' since in this case `type.IsSubclassOf (parent)' will
+       be false on the ms runtime.
+
+2002-09-13  Martin Baulig  <martin@gnome.org>
+
+       * ecore.cs (SimpleName.SimpleNameResolve): Include the member name in
+       the CS0038 error message.
+
+2002-09-12  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs (CheckedExpr, UnCheckedExpr): If we have a
+       constant inside, return it.
+
+2002-09-12  Martin Baulig  <martin@gnome.org>
+
+       * cfold.cs (ConstantFold.DoConstantNumericPromotions): Check whether an
+       implicit conversion can be done between enum types.
+
+       * enum.cs (Enum.LookupEnumValue): If the value is an EnumConstant,
+       check whether an implicit conversion to the current enum's UnderlyingType
+       exists and report an error if not.
+
+       * codegen.cs (CodeGen.Init): Delete the symbol file when compiling
+       without debugging support.
+
+       * delegate.cs (Delegate.CloseDelegate): Removed, use CloseType instead.
+       Fixes bug #30235.  Thanks to Ricardo Fernández Pascual.
+
+2002-09-12  Martin Baulig  <martin@gnome.org>
+
+       * typemanager.cs (TypeManager.IsNestedChildOf): New method.
+
+       * ecore.cs (IMemberExpr.DeclaringType): New property.
+       (SimpleName.SimpleNameResolve): Check whether we're accessing a
+       nonstatic member of an outer type (CS0038).
+
+2002-09-11  Miguel de Icaza  <miguel@ximian.com>
+
+       * driver.cs: Activate the using-error detector at warning level
+       4 (at least for MS-compatible APIs).
+
+       * namespace.cs (VerifyUsing): Small buglett fix.
+
+       * pending.cs (PendingImplementation): pass the container pointer. 
+
+       * interface.cs (GetMethods): Allow for recursive definition.  Long
+       term, I would like to move every type to support recursive
+       definitions, not the current ordering mechanism that we have right
+       now.
+
+       The situation is this: Attributes are handled before interfaces,
+       so we can apply attributes to interfaces.  But some attributes
+       implement interfaces, we will now handle the simple cases
+       (recursive definitions will just get an error).  
+
+       * parameter.cs: Only invalidate types at the end if we fail to
+       lookup all types.  
+
+2002-09-09  Martin Baulig  <martin@gnome.org>
+
+       * ecore.cs (PropertyExpr.Emit): Also check for
+       TypeManager.system_int_array_get_length so this'll also work when
+       compiling corlib.  Fixes #30003.
+
+2002-09-09  Martin Baulig  <martin@gnome.org>
+
+       * expression.cs (ArrayCreation.MakeByteBlob): Added support for enums
+       and throw an exception if we can't get the type's size.  Fixed #30040,
+       added test-165.cs.
+
+2002-09-09  Martin Baulig  <martin@gnome.org>
+
+       * ecore.cs (PropertyExpr.DoResolve): Added check for static properies.
+
+       * expression.cs (SizeOf.DoResolve): Sizeof is only allowed in unsafe
+       context.  Fixes bug #30027.
+
+       * delegate.cs (NewDelegate.Emit): Use OpCodes.Ldvirtftn for
+       virtual functions.  Fixes bug #30043, added test-164.cs.
+
+2002-09-08  Ravi Pratap  <ravi@ximian.com>
+
+       * attribute.cs : Fix a small NullRef crash thanks to my stupidity.
+
+2002-09-08  Nick Drochak  <ndrochak@gol.com>
+
+       * driver.cs: Use an object to get the windows codepage since it's not a
+       static property.
+
 2002-09-08  Miguel de Icaza  <miguel@ximian.com>
 
+       * statement.cs (For.Emit): for infinite loops (test == null)
+       return whether there is a break inside, not always "true".
+
        * namespace.cs (UsingEntry): New struct to hold the name of the
        using definition, the location where it is defined, and whether it
        has been used in a successful type lookup.