2004-10-20 Marek Safar <marek.safar@seznam.cz>
[mono.git] / mcs / mcs / ChangeLog
index bf4402b57b8379f018e375ad321f54d267e824b7..f265e7ea828edede0f099b19e2b5e8684c81baf0 100755 (executable)
@@ -1,3 +1,525 @@
+2004-10-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodCore.CheckBase): Add errors 505, 533, 544,
+       561 report.
+       (PropertyBase.FindOutParentMethod): Add errors 545, 546 report.
+
+2004-10-18  Martin Baulig  <martin@ximian.com>
+
+       Merged latest changes into gmcs.  Please keep this comment in
+       here, it makes it easier for me to see what changed in MCS since
+       the last time I merged.
+
+2004-10-18  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Fixed.Resolve): Don't access the TypeExpr's
+       `Type' directly, but call ResolveType() on it.
+       (Catch.Resolve): Likewise.
+       (Foreach.Resolve): Likewise.
+
+2004-10-18  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Cast.DoResolve): Don't access the TypeExpr's
+       `Type' directly, but call ResolveType() on it.
+       (Probe.DoResolve): Likewise.
+       (ArrayCreation.LookupType): Likewise.
+       (TypeOf.DoResolve): Likewise.
+       (SizeOf.DoResolve): Likewise.
+
+2004-10-18  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Invocation.BetterFunction): Put back
+       TypeManager.TypeToCoreType().
+
+2004-10-18  Raja R Harinath  <rharinath@novell.com>
+
+       * class.cs (FieldMember.DoDefine): Reset ec.InUnsafe after doing
+       the ResolveType.
+
+2004-10-18  Martin Baulig  <martin@ximian.com>
+
+       * parameter.cs (Parameter.Resolve):  Don't access the TypeExpr's
+       `Type' directly, but call ResolveType() on it.
+
+2004-10-18  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (FieldMember.Define): Don't access the TypeExpr's
+       `Type' directly, but call ResolveType() on it.
+       (MemberBase.DoDefine): Likewise.
+
+       * expression.cs (New.DoResolve): Don't access the TypeExpr's
+       `Type' directly, but call ResolveType() on it.
+       (ComposedCast.DoResolveAsTypeStep): Likewise.
+
+       * statement.cs (LocalInfo.Resolve): Don't access the TypeExpr's
+       `Type' directly, but call ResolveType() on it.
+
+2004-10-17  John Luke  <john.luke@gmail.com>
+
+       * class.cs (Operator.GetSignatureForError): use CSharpName
+
+       * parameter.cs (Parameter.GetSignatureForError): Returns
+       correct name even if was not defined.
+
+2004-10-13  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #65816.
+       * class.cs (TypeContainer.EmitContext): New property.
+       (DefineNestedTypes): Create an emitcontext for each part.
+       (MethodCore.DoDefineParameters): Use container's emitcontext.
+       Pass type array to InternalParameters.
+       (MemberBase.DoDefine): Use container's emitcontext.
+       (FieldMember.Define): Likewise.
+       (Event.Define): Likewise.
+       (SetMethod.GetParameterInfo): Change argument to EmitContext.
+       Pass type array to InternalParameters.
+       (SetIndexerMethod.GetParameterInfo): Likewise.
+       (SetMethod.Define): Pass emitcontext to GetParameterInfo.
+       * delegate.cs (Define): Pass emitcontext to
+       ComputeAndDefineParameterTypes and GetParameterInfo.  Pass type
+       array to InternalParameters.
+       * expression.cs (ParameterReference.DoResolveBase): Pass
+       emitcontext to GetParameterInfo.
+       (ComposedCast.DoResolveAsTypeStep): Remove check on
+       ec.ResolvingTypeTree.
+       * parameter.cs (Parameter.Resolve): Change argument to
+       EmitContext.  Use ResolveAsTypeTerminal.
+       (Parameter.GetSignature): Change argument to EmitContext.
+       (Parameters.ComputeSignature): Likewise.
+       (Parameters.ComputeParameterTypes): Likewise.
+       (Parameters.GetParameterInfo): Likewise.
+       (Parameters.ComputeAndDefineParameterTypes): Likewise.
+       Re-use ComputeParameterTypes.  Set ec.ResolvingTypeTree.
+       * support.cs (InternalParameters..ctor): Remove variant that takes
+       a DeclSpace.
+       * typemanager.cs (system_intptr_expr): New.
+       (InitExpressionTypes): Initialize it.
+
+2004-10-12  Chris Toshok  <toshok@ximian.com>
+
+       * cs-parser.jay: fix location for try_statement and catch_clause.
+
+2004-10-11  Martin Baulig  <martin@ximian.com>
+
+       * report.cs: Don't make --fatal abort on warnings, we have
+       -warnaserror for that.
+
+2004-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       More DeclSpace.ResolveType avoidance.
+       * decl.cs (MemberCore.InUnsafe): New property.
+       * class.cs (MemberBase.DoDefine): Use ResolveAsTypeTerminal 
+       with newly created EmitContext.
+       (FieldMember.Define): Likewise.
+       * delegate.cs (Delegate.Define): Likewise.
+       * ecore.cs (SimpleName.ResolveAsTypeStep): Lookup with alias
+       only if normal name-lookup fails.
+       (TypeExpr.DoResolve): Enable error-checking.
+       * expression.cs (ArrayCreation.DoResolve): Use ResolveAsTypeTerminal.
+       (SizeOf.DoResolve): Likewise.
+       (ComposedCast.DoResolveAsTypeStep): Likewise.
+       (StackAlloc.DoResolve): Likewise.
+       * statement.cs (Block.Flags): Add new flag 'Unsafe'.
+       (Block.Unsafe): New property.
+       (Block.EmitMeta): Set ec.InUnsafe as appropriate.
+       (Unsafe): Set 'unsafe' flag of contained block.
+       (LocalInfo.Resolve): Use ResolveAsTypeTerminal.
+       (Fixed.Resolve): Likewise.
+       (Catch.Resolve): Likewise.
+       (Using.ResolveLocalVariableDecls): Likewise.
+       (Foreach.Resolve): Likewise.
+
+2004-10-05  John Luke <john.luke@gmail.com>
+
+       * cs-parser.jay: add location to error CS0175
+
+2004-10-04  Miguel de Icaza  <miguel@ximian.com>
+
+       * ecore.cs (Expression.Constantity): Add support for turning null
+       into a constant.
+
+       * const.cs (Const.Define): Allow constants to be reference types
+       as long as the value is Null.
+
+2004-10-04  Juraj Skripsky  <js@hotfeet.ch>
+
+       * namespace.cs (NamespaceEntry.Using): No matter which warning
+       level is set, check if this namespace name has already been added.
+
+2004-10-03 Ben Maurer  <bmaurer@ximian.com>
+
+       * expression.cs: reftype [!=]= null should always use br[true,false].
+       # 67410
+
+2004-10-03  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #67108
+       * attribute.cs: Enum conversion moved to 
+       GetAttributeArgumentExpression to be applied to the all
+       expressions.
+
+2004-10-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #65833, test-300.cs, cs0122-5.cs, cs0122-6.cs.
+       * class.c (TypeContainer.DefineType): Flag error if
+       base types aren't accessible due to access permissions.
+       * decl.cs (DeclSpace.ResolveType): Move logic to
+       Expression.ResolveAsTypeTerminal.
+       (DeclSpace.ResolveTypeExpr): Thin layer over
+       Expression.ResolveAsTypeTerminal.
+       (DeclSpace.CheckAccessLevel, DeclSpace.FamilyAccess):
+       Refactor code into NestedAccess.  Use it.
+       (DeclSpace.NestedAccess): New.
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Add new
+       argument to silence errors.  Check access permissions.
+       (TypeExpr.DoResolve, TypeExpr.ResolveType): Update.
+       * expression.cs (ProbeExpr.DoResolve): Use ResolveAsTypeTerminal.
+       (Cast.DoResolve): Likewise.
+       (New.DoResolve): Likewise.
+       (InvocationOrCast.DoResolve,ResolveStatement): Likewise.
+       (TypeOf.DoResolve): Likewise.
+
+       * expression.cs (Invocation.BetterConversion): Return the Type of
+       the better conversion.  Implement section 14.4.2.3 more faithfully.
+       (Invocation.BetterFunction): Make boolean.  Make correspondence to
+       section 14.4.2.2 explicit.
+       (Invocation.OverloadResolve): Update.
+       (Invocation): Remove is_base field.
+       (Invocation.DoResolve): Don't use is_base.  Use mg.IsBase.
+       (Invocation.Emit): Likewise.
+
+2004-09-27  Raja R Harinath  <rharinath@novell.com>
+
+       * README: Update to changes.
+
+2004-09-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Reverted 642 warning fix.
+
+2004-09-23  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix bug #66615
+       * decl.cs (FindMemberWithSameName): Indexer can have more than
+       1 argument.
+
+2004-09-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (LocalVariableReference.DoResolveLValue):
+       Do not report warning 219 for out values.
+       (EmptyExpression.Null): New member to avoid extra allocations.
+
+2004-09-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Fix wrong warning 642 report.
+
+       * cs-tokenizer.cs (CheckNextToken): New helper;
+       Inspect next character if is same as expected.
+
+2004-09-23  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs (Convert.ImplicitReferenceConversion): Some code cleanup.
+       (Convert.ImplicitReferenceConversionExists): Likewise.
+
+2004-09-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Operator.Define): Add error 448 and 559 report.
+
+2004-09-22  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MemberBase.IsTypePermitted): New protected
+       method for checking error CS0610.
+
+2004-09-22  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (TypeContainer.HasExplicitLayout): New property
+       Returns whether container has StructLayout attribute set Explicit.
+       (FieldMember): New abstract class for consts and fields.
+       (FieldMember.ApplyAttributeBuilder): Add error 636 and 637 report.
+       (Field): Reuse FieldMember.
+
+       * const.cs (Const): Reuse FieldMember.
+
+       * rootcontext.cs: EmitConstants call moved to class.
+
+2004-09-22  Martin Baulig  <martin@ximian.com>
+
+       Thanks to Peter Sestoft for this bug report.
+
+       * expression.cs (Conditional): If both the `trueExpr' and the
+       `falseExpr' is a NullLiteral, return a NullLiteral.
+
+2004-09-22  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Foreach.EmitCollectionForeach): If we're in an
+       iterator, use `enumerator.EmitThis()' instead of `ec.EmitThis()'
+       for the "get_Current" call.
+
+2004-09-22  Martin Baulig  <martin@ximian.com>
+
+       Marek and me just fixed one of our oldest bugs: #28562 :-)
+
+       * ecore.cs (EnumConstant.GetValueAsEnumType): New public method.
+
+       * attribute.cs (Attribute.GetAttributeArgumentExpression): If
+       we're an EnumConstant, just return that.
+       (Attribute.Resolve): GetAttributeArgumentExpression() may give us
+       an EnumConstant.  In this case, we need to use GetValueAsEnumType()
+       to get the value which'll actually be written into the attribute.
+       However, we have to use GetValue() to access the attribute's value
+       in the compiler.        
+
+2004-09-22  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.IsNegative): New abstract property
+       IsNegative.
+
+       * expression.cs (ArrayAccess.DoResolve): Add warning 251.
+       (StackAlloc.DoResolve): Reused IsNegative.
+
+2004-09-21  Martin Baulig  <martin@ximian.com>
+
+       * codegen.cs (VariableStorage): Don't store the ILGenerator here;
+       if we're used in an iterator, we may be called from different
+       methods.
+
+       * statement.cs (Foreach.EmitFinally): Only emit an `Endfinally' if
+       we actually have an exception block.
+
+2004-09-20  John Luke <jluke@cfl.rr.com>
+
+       * class.cs, cs-parser.jay: Improve the error report for 1520:
+       report the actual line where the error happens, not where the
+       class was declared.
+
+       * assign.cs, delegate.cs, ecore.cs, expression.cs, statement.cs:
+       Pass location information that was available elsewhere.
+
+2004-09-19  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * codegen.cs: Fix bug #56621. It is now possible to use MCS on the MS
+       runtime to delay sign assemblies.
+
+2004-09-19  Miguel de Icaza  <miguel@ximian.com>
+
+       * cs-parser.jay: Do not report the stack trace, this is barely
+       used nowadays.
+
+2004-08-22  John Luke  <john.luke@gmail.com>
+       * driver.cs : check that a resource id is not already used
+       before adding it, report CS1508 if it is, bug #63637
+
+2004-09-19  Miguel de Icaza  <miguel@ximian.com>
+
+       * ecore.cs: Removed dead code.
+
+2004-09-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs: Do not report warning CS0067 on the interfaces.
+
+2004-09-16  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Add error 504 report.
+
+2004-09-16  Marek Safar  <marek.safar@seznam.cz>
+
+       * rootcontext.cs: WarningLevel is 4 by default now.
+
+       * statement.cs (Fixed.Resolve): Do not null
+       VariableInfo.
+
+2004-09-16  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #55780
+       * ecore.cs (PropertyExpr.FindAccessors): Do not perform
+       deep search when property is not virtual.
+       (PropertyExpr.ResolveAccessors): Make one call for both
+       accessors.
+
+2004-09-15  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #65766
+       * statement.cs: Error 152 report constains also location.
+
+2004-09-15  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #65766
+       * const.cs: Explicitly set constant as static.
+
+2004-09-15  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #64226
+       * cs-parser.jay: Add error 1017 report.
+
+2004-09-15  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #59980, #64224
+       * expression.cs (Invocation.DoResolve): Fixed error CS0571 test.
+
+       * typemanager.cs (IsSpecialMethod): Simplified
+
+2004-09-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * decl.cs (MemberCore.Emit): Resuscitated VerifyObsoleteAttribute
+       condition with better params.
+
+2004-09-14  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #65238
+       * attribute.cs (Resolve): Property has to have both
+       accessors.
+
+2004-09-14  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (MemberCore.Emit): Always call VerifyObsoleteAttribute().
+
+2004-09-14  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed bug #61902
+       * codegen.cs (TestObsoleteMethodUsage): Trace when method is
+       called and is obsolete then this member suppress message
+       when call is inside next [Obsolete] method or type.
+
+       * expression.cs: Use TestObsoleteMethodUsage member.
+
+2004-09-14  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay: Sync a bit with the GMCS version.
+
+2004-09-14  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay (CSharpParser): Don't derive from GenericsParser.
+       (CSharpParser.yacc_verbose_flag): New public field.
+
+       * genericparser.cs: Removed.
+
+2004-09-14  Raja R Harinath  <rharinath@novell.com>
+
+       * cs-parser.jay (event_declaration): Re-enable cs0071 error.
+
+2004-09-13  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodCore.CheckBase): Fix bug #65757.
+
+2004-09-10  Martin Baulig  <martin@ximian.com>
+
+       Backported my MemberName changes from GMCS into MCS.
+
+       - we are now using a special `MemberName' class instead of using
+       strings; in GMCS, the `MemberName' also contains the type
+       arguments.
+
+       - changed the grammar rules a bit:
+         * the old `member_name' is now a `namespace_or_type_name':
+           The rule is that we use `namespace_or_type_name' everywhere
+           where we expect either a "member name" (GetEnumerator) or a
+           "member name" with an explicit interface name
+           (IEnumerable.GetEnumerator).
+           In GMCS, the explicit interface name may include type arguments
+           (IEnumerable<T>.GetEnumerator).
+         * we use `member_name' instead of just `IDENTIFIER' for
+           "member names":
+           The rule is that we use `member_name' wherever a member may
+           have type parameters in GMCS.       
+
+       * decl.cs (MemberName): New public class.
+       (MemberCore.MemberName): New public readonly field.
+       (MemberCore.ctor): Take a `MemberName' argument, not a string.
+       (DeclSpace): Likewise.
+
+       * delegate.cs (Delegate.ctor): Take a MemberName, not a string.
+       * enum.cs (Enum.ctor): Likewise.
+
+       * namespace.cs (AliasEntry.Alias): Changed type from Expression to
+       MemberName.     
+       (AliasEntry.ctor): Take a MemberName, not an Expression.
+       (AliasEntry.UsingAlias): Likewise.
+
+       * class.cs (TypeContainer.ctor): Take a MemberName, not a string.
+       (IMethodData.MemberName): Changed type from string to MemberName.
+       (MemberBase.ExplicitInterfaceName): Likewise.
+       (AbstractPropertyEventMethod.SetupName): Make this private.
+       (AbstractPropertyEventMethod.ctor): Added `string prefix'
+       argument; compute the member name here.
+       (AbstractPropertyEventMethod.UpdateName): Recompute the name based
+       on the `member.MemberName' and the `prefix'.
+
+       * cs-parser.jay (attribute_name): Use `namespace_or_type_name',
+       not `type_name'.
+       (struct_declaration): Use `member_name' instead of `IDENTIFIER';
+       thus, we get a `MemberName' instead of a `string'.  These
+       declarations may have type parameters in GMCS.
+       (interface_method_declaration, delegate_declaration): Likewise.
+       (class_declaration, interface_declaration): Likewise.
+       (method_header): Use `namespace_or_type_name' instead of
+       `member_name'.  We may be an explicit interface implementation.
+       (property_declaration, event_declaration): Likewise.
+       (member_name): This is now just an `IDENTIFIER', not a
+       `namespace_or_type_name'.
+       (type_name, interface_type): Removed.
+       (namespace_or_type_name): Return a MemberName, not an Expression.
+       (primary_expression): Use `member_name' instead of `IDENTIFIER';
+       call GetTypeExpression() on the MemberName to get an expression.
+       (IndexerDeclaration.interface_type): Changed type from string to
+       MemberName.
+       (MakeName): Operate on MemberName's instead of string's.
+
+2004-09-13  Raja R Harinath  <rharinath@novell.com>
+
+       Fix bug #55770.
+       * namespace.cs (AliasEntry.Resolve): Implement section 16.3.1.
+       (NamespaceEntry.Lookup): Add new argument to flag if we want the
+       lookup to avoid symbols introduced by 'using'.
+       * rootcontext.cs (NamespaceLookup): Update.
+
+2004-09-12  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (TypeContainer.DoDefineMembers): Do not call
+       DefineDefaultConstructor for static classes.
+
+2004-09-12  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.Resolve): Add error 653 report.
+
+       * class.cs (Class.ApplyAttributeBuilder): Add error 641
+       report.
+       (Method.ApplyAttributeBuilder): Add error 685 report.
+       (Operator.Define): Add error 564 report.
+
+       * cs-tokenizer.cs (handle_hex): Add error 1013 report.
+
+       * expression.cs (Invocation.DoResolve): Add error
+       245 and 250 report.
+
+       * parameter.cs (Parameter.ApplyAttributeBuilder): Add
+       error 674 report.
+
+2004-09-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (ConstructorInitializer.Resolve):
+       Wrong error number (515->516).
+
+2004-09-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Indexer.Define): Add error 631 report.
+
+2004-09-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (Error_NegativeArrayIndex): Fix 248 error.
+
+2004-09-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (Probe.DoResolve): Add error CS0241 report.
+
+2004-09-10  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Added error CS0241 report.
+
+2004-09-10  Raja R Harinath  <rharinath@novell.com>
+
+       * cs-parser.jay (fixed_statement): Introduce a scope for the
+       declaration in the 'fixed' statement.
+
 2004-09-09  Marek Safar  <marek.safar@seznam.cz>
 
        * cs-parser.jay: Added CS0230 error report.
 
        * enum.cs (EnumMember): Clean up to reuse the base structures
 
-2004-09-03  Martin Baulig  <martin@ximian.com>
-
-       Merged latest changes into gmcs.  Please keep this comment in
-       here, it makes it easier for me to see what changed in MCS since
-       the last time I merged.
-
 2004-09-03  Martin Baulig  <martin@ximian.com>
 
        * class.cs (TypeContainer.DefineDefaultConstructor): Put this back