2005-08-20 Martin Baulig <martin@ximian.com>
[mono.git] / mcs / mcs / ChangeLog
index ec3199cfa97ab66ee8025175a2aff45dafc1bf79..3ca6b4275663d3d7a6835ee02ffc00fbe19bab83 100644 (file)
@@ -1,3 +1,830 @@
+2005-08-20  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.CaptureThis): Create the topmost
+       scope if we don't already have it.
+
+       * expression.cs (Invocation.EmitCall): Use `ec.EmitThis ()' rather
+       than `ig.Emit (OpCodes.Ldarg_0)' to make it work inside iterators;
+       fixes #75867.
+
+2005-08-17  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75803
+       * decl.cs (DeclSpace.VerifyClsCompliance): Skip when collision object
+       is a partial class.
+
+2005-08-16  Marek Safar  <marek.safar@seznam.cz>
+
+       The big constants rewrite
+       Fix #75746, #75685 and more
+       As a side effect saved 1MB for MWF ;-)
+       
+       * attribute.cs (GetAttributeArgumentExpression): Use ToType, GetTypedValue.
+       (GetMarshal, GetMethodImplOptions, GetLayoutKindValue): Values are not
+       enum based for corlib compilation.
+       
+       * cfold.cs (BinaryFold): Convert operand for enum additions. Fixed enum
+       subtractions.
+       
+       * class.cs (FixedField.Define): Use ResolveAsConstant.
+       
+       * const.cs (IConstant): Interface constants and enums.
+       (Const.ResolveValue): New method for constant resolvning.
+       (ExternalConstant): Constants from imported assemblies.
+       
+       * constant.cs (Constant.GetTypedValue): Used to get constant with forced
+       conversion; like enums.
+       (Constant.ToType): Converts this constant to different type.
+       (Constant.Increment): Adds 1.
+       
+       * convert.cs (ImplicitConversionRequired): Simplified.
+       
+       * cs-parser.jay: Create EnumMember directly.
+       
+       * decl.cs (MemberCore.CheckObsoleteness): Checks for ObsoleteAttribute presence.
+       
+       * doc.cs (GenerateEnumDocComment): Removed.
+       
+       * ecore.cs (Expression.ResolveAsConstant): New constant specific method.
+       (ConvertIntLiteral): Removed.
+       (FieldExpr.ResolveMemberAccess): Refactored to remove constant specific if(s).
+       
+       * enum.cs (EnumMember): Implement IConstant.
+       (Enum.IsValidEnumConstant): Removed.
+       (Enum.GetNextDefaultValue): Removed.
+       (Enum.FindMembers): Updated.
+       (Enum.GenerateDocComment): Iterate enum members.
+       
+       * expression.cs (Cast.TryReduce): Handle enums correctly.
+       (New.Constantify): Made public.
+       (MemberAccess.DoResolve): Removed contant specific if(s).
+       
+       * literal.cs (NullLiteral): Implement new abstract methods.
+       
+       * statement.cs (GotoCase.Resolve): Use new constant methods.
+       (SwitchLabel.ResolveAndReduce): Use new constant methods.
+       
+       * typemanager.cs (LookupEnum): Removed.
+       (IsEnumType): Fixed to work with corlib.
+       (RegisterConstant): Removed.
+       (LookupConstant): Removed.
+       (GetConstant): Changed to work with IConstant.
+
+2005-08-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : Fixed overflown (>255) column number.
+
+2005-08-03  Raja R Harinath  <rharinath@novell.com>
+
+       First cut of the qualified-alias-member feature.
+       * cs-tokenizer.cs (Tokenizer.is_punct): Recognize the double-colon
+       token.
+       * cs-parser.jay (DOUBLE_COLON): New token.
+       (namespace_or_type_name): Add rule for recognizing
+       qualified-alias-members.
+       (primary_expression): Likewise.
+       (element_access): Allow QualifiedAliasMember as a possible
+       type-bearing expression.
+       (local_variable_type, local_variable_pointer_type): Likewise.
+       * namespace.cs (NamespaceEntry.LookupAlias): New.  Looks up
+       aliases in the current and enclosing namespace declarations.
+       (NamespaceEntry.UsingAlias): Add CS0440 warning.
+       * decl.cs (MemberName.is_double_colon): New.
+       (MemberName.MemberName): Add new constructor for alias-member.
+       (MemberName.GetTypeExpression): Generate QualifiedAliasMember too.
+       * expression.cs (QualifiedAliasMember): New expression type.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : it borked when no argument was specified.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : tiny ToString() format fix.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * statement.cs : oops, it was missing.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       A set of fixes for precise line/column location.
+
+       * location.cs :
+         "token" field now holds a file/line "delta", a line number offset 
+         from the segment, and a column number. See also:
+         http://lists.ximian.com/pipermail/mono-devel-list/2004-
+         December/009508.html
+         Removed static IsNull. Use instance IsNull property instead.
+       * cs-tokenizer.cs :
+         For some tokens it stores Location. For Identifier it stores
+         LocatedToken which is a pair of string name and location.
+         Column numbers are adjusted only at getChar().
+       * report.cs :
+         Use Location.ToString() for reporting (it now contains column).
+       * cs-parser.jay :
+         Largely modified to use LocatedToken instead of
+         string (IDENTIFIER), and to acquire Location from some tokens.
+       * namespace.cs, decl.cs, ecore.cs, class.cs, delegate.cs,
+         iterators.cs, const.cs, anonymous.cs, tree.cs, enum.cs,
+         codegen.cs :
+         Now MemberName holds Location. DeclSpace.ctor() receives Location
+         as a parameter. Removed extra parameters to all derived classes.
+         Replaced Location.IsNull() with instance property.
+       * assign.cs, expression.cs :
+         Added .ctor() overload that omits Location.
+       * attribute.cs :
+         Added "nameEscaped" flag that indicates the identifier was escaped
+         in the source file. This fixes bug #57047.
+
+2005-08-02  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AttributeTester.GetImportedIgnoreCaseClsType):
+       New method, looking for lo-case imported cls type.
+
+       * decl.cs (DeclSpace.VerifyClsCompliance): Check CS3005 for types
+       here.
+
+       * driver.cs: Removed VerifyTopLevelNameClsCompliance usage.
+
+       * enum (Enum.VerifyClsCompliance): Hardcode non-compliant types.
+
+       * typemanager.cs (TypeManager.AllClsTopLevelTypes): Renamed from
+       all_imported_types.
+       (TypeManager.LoadAllImportedTypes): Lo-case imported types.
+
+       Optimized to save 3.5 MB for SWF compilation.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (AddToTypeContainer): Use inheritance insted of if(s).
+       (PartialContainer.Create): Moved logic AddToContainer.
+       (PartialContainer.MarkForDuplicationCheck): Shares name.
+       
+       * decl.cs (DeclSpace.AddToContainer): Check name collisions at one
+       place.
+       
+       * namespace.cs (Namespace.AddDeclSpace): Lazy declspaces
+       initialization.
+       (Namespace.GetSignatureForError): New method.
+       
+       * tree.cs (Tree.RecordDecl): Moved to AddToContainer.
+       (RootTypes.AddToTypeContainer): se inheritance insted of if(s).
+
+2005-08-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75669.
+       * ecore.cs (Expression.MemberLookupFailed): Use queried_type for
+       member lookup rather than qualifier_type, since qualifier_type can
+       be null.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * enum.cs (Enum.VerifyClsName): Fixed to allow not CLSCompliant
+       enum member.
+
+2005-07-31  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs: Copy the local exception into the exception
+       captured local.  Fixes 75674
+
+2005-07-31  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #75658.
+       * expression.cs (Invocation.OverloadResolve): Don't report error
+       CS1501 if error CS1502 has been reported.
+       (New.DoResolve): Delegate CS1501 reporting to
+       Invocation.OverloadResolve.
+
+       Fix #75656.
+       * statement.cs (Block.CheckInvariantMeaningInBlock): Verify
+       invariant-meaning-in-block property in an enclosing block if
+       necessary.
+
+2005-07-29  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (SwitchLabel.ResolveAndReduce): Refactored.
+       (SwitchLabel.Erorr_AlreadyOccurs): Share error message.
+       (Switch.CheckSwitch): Just save 50kb for SWF.
+
+2005-07-27  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.AddField): Added
+       `AnonymousContainer am' argument; compute its toplevel scope if
+       it's not already computed.  Fixes #75649.
+
+2005-07-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75628.
+       * class.cs (Constructor.Emit): Reset block to null if the block
+       resolve fails.
+
+2005-07-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (TypeContainer.VerifyMembers): Be compatible in warning 169.
+
+2005-07-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodData.Define): Check whether accessor implementing
+       interface is public.
+
+       * driver.cs (Driver.parse): Try to be smart and check for `MZ' header.
+
+2005-07-22  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #57245
+       * namespace.cs (LookupType): Moved same type check to...
+       
+       * typemanager.cs (LookupTypeReflection): Don't allow to import more types
+       with the same name.
+
+2005-07-21  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (NamespaceLookupType): Avoid a string allocation when we
+       already found a typebuilder.
+       * class.cs (MethodCore.IsDuplicateImplementation): Compare
+       MemberNames, not strings.
+
+       * const.cs (Error_ExpressionMustBeConst): 
+       Rename from Error_EpressionMustBeConst.
+       * const.cs, class.cs, statement.cd: Update.
+
+2005-07-21  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #65573
+
+       * const.cs (Const.LookupConstantValue): Report missing contant expression
+       everytime.
+       (Error_EpressionMustBeConstant): Only one error method.
+
+       * class.cs, statement.c: Updated.
+
+2005-07-20  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Block.Flags): Add back HasVarargs.
+       (Block.flags): Make protected.
+       (ToplevelBlock.HasVarargs): Convert to a property that updates flags.
+
+       * typemanager.cs (types, typecontainers, user_types): Remove.
+       (UserTypes, TypeContainers): Likewise.
+       (HandleDuplicate, AddDelegateType, AddEnumType): Likewise.
+       (CleanUp, Reset): Update.
+       (AddUserType): Combine variants.  Now, only updates builder_to_declspace.
+       (GetNestedType): Use Type.GetNestedType.
+       (CoreLookupType): Take two arguments, the namespace and the
+       basename of the type.  Update to use the Namespace.Lookup
+       mechanism.
+       (InitEnumUnderlyingTypes, InitCoreTypes): Update.
+       (RealMemberLookup): Use IsNestedChildOf instead of playing with
+       string concatenation and substring matches.
+       * class.cs, enum.cs, delegate.cs: Update to changes.
+
+2005-07-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.Error_ConstantValueCannotBeConverted): Moved from
+       Expression and made virtual.
+
+       * convert.cs (ImplicitReferenceConversionExists): Skip for value types.
+       (ImplicitStandardConversionExists): Fixed `byte' typo ?
+
+       * ecore.cs (Expression.Error_ConstantValueCannotBeConverted): Moved.
+
+       * literal.cs (NullLiteral.Error_ConstantValueCannotBeConverted): Customize
+       error message.
+
+       * convert.cs, ecore.cs, enum.cs: Reflect Error_ConstantValueCannotBeConverted
+       change.
+
+2005-07-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #57707
+       * codegen.cs (AssemblyClass.ApplyAttributeBuilder): Check whether
+       AssemblyCultureAttribute is not used on executable.
+
+       * rootcontext.cs,
+       * typemanager.cs: Add System.Reflection.AssemblyCultureAttribute.
+
+2005-07-16  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #60638.
+       * expression.cs (Binary.Warning_UnintendeReferenceComparison):
+       New.  Reports CS0252/CS0253.
+       Mostly taken from preliminary patch by Duncak Mak.
+       (Binary.DoResolveOperator): Store results of operator lookup.
+       Use them to detect if we need to warn about unintended reference
+       comparisons.
+
+2005-07-15  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #72969.
+       * namespace.cs (Namespace.Lookup): Add back location parameter.
+       (Namespace.LookupType): Add CS0436 report.  Add location parameter.
+       * delegate.cs, ecore.cs, expression.cs: Update to changes.
+
+       * codegen.cs (EmitContext.DeclSpace): Make readonly.
+       * namespace.cs (Namespace.Lookup): Carve out type lookup into ...
+       (Namespace.LookupType): ... this.
+       (NamespaceEntry.GetUsingTable): Allocate only one zero-sized array
+       of namespaces.
+       * typemanager.cs (LookupTypeReflection): Remove buggy code that
+       purported to handle pointers.
+       (char_ptr_type, void_ptr_type): Use GetPointerType rather than
+       CoreLookupType.
+
+2005-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+       type as namespace.
+
+2005-07-15  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (Namespace.Lookup): Drop location parameter.
+       (NamespaceEntry.LookupAlias): Remove.  Merge into ...
+       (NamespaceEntry.Lookup): ... this.
+       (NamespaceEntry.Error_AmbiguousTypeReference):
+       Move here from DeclSpace.
+       (NamespaceEntry.LookupNamespaceOrType): Move support for dotted
+       names ...
+       * ecore.cs (TypeLookupExpression.DoResolveAsTypeStep): ... here.
+       * decl.cs (DeclSpace.ErrorAmbiguousTypeReference):
+       Move to NamespaceEntry.
+       * delegate.cs, expression.cs: Update to changes.
+
+2005-07-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveAttributeType): Renamed from
+       CheckAttributeType and refactored.
+       (Attribute.ResolvePossibleAttributeType): Changed to reuse
+       ResolveAsTypeTerminal error handling.
+       (ResolveAsTypeTerminal): Introduced because of global attributes extra
+       handling.
+       (GetSignatureForError): Print errors in same way.
+
+       * class.cs,
+       * codegen.cs: Reflect attribute GetSignatureForError change.
+
+       * ecore.cs,
+       * expression.cs: Add silent parameter to ResolveAsTypeStep.
+
+       * namespace.cs (UsingEntry): Refactored to make fields private.
+
+       * assign.cs,
+       statement.cs: Error_UnexpectedKind has extra parameter.
+
+2005-07-14  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (IAlias): Remove.
+       * decl.cs (DeclSpace): Don't derive from IAlias.  Remove members
+       that implement the interface.
+       * namespace.cs (Namespace): Likewise.
+       (Namespace.declspaces): Renamed from 'defined_names'.
+       (Namespace.AddDeclSpace): Renamed from 'DefineName'.  Take a
+       DeclSpace instead of an IAlias.
+       * tree.cs (Tree.AddDecl): Update.
+
+2005-07-12  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Block.Flags); Remove HasVarargs.
+       (Block.HasVarargs): Move to ToplevelBlock.
+       (Block.ThisVariable, Block.AddThisVariable): Likewise.
+       (Block.Variables): Make protected.  Initialize variable hashtable
+       if necessary.
+       (Block.AddVariable): Update.
+       (Block.Resolve): Update to changes.
+       (ToplevelBlock.HasVarargs): New boolean.
+       (ToplevelBlock.ThisVariable): Move here from Block.
+       (ToplevelBlock.AddThisVariable): Likewise.
+       (ToplevelBlock.IsThisAssigned): New.  Forwards call to this_variable.
+       * expression.cs (This.ResolveBase): Update to changes.
+       (ArglistAccess.DoResolve): Likewise.
+
+2005-07-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75321
+       * ecore.cs, class.cs: Use SetAssigned instead of direct access.
+
+       * class.cs (TypeContainer.VerifyMembers): Distinguish between
+       not used and not used & assigned.
+       (FieldBase.ASSIGNED): Moved to MemberCore.Flags.
+
+2005-07-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75053
+       * expression.cs (Is.DoResolve): null is never provided type.
+
+2005-07-08  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #52496
+       * cs-parser.jay: Less strict event error rule to catch more errors.
+
+2005-07-08  Martin Baulig  <martin@ximian.com>
+
+       Fix test-iter-10.cs - distinguish whether we `yield' in a property
+       gettter (allowed) or setter (not allowed).
+
+       * class.cs (Accessor): Implement IIteratorContainer.
+       (Accessor.Yields): New public field.
+       (PropertyBase.PropertyMethod.Define): Handle iterators on a
+       per-accessor basis.
+
+       * cs-parser.jay
+       (get_accessor_declaration, set_accessor_declaration): Set the
+       `yields' flag on the accessor, not the property.
+       (property_declaration): Do the iterators check on a per-accessor
+       basis and not for the whole property.
+
+2005-07-08  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.EmitParameterInstance): Correctly
+       handle parameters in nested scopes; fixes #74808; see gtest-188.cs.
+
+2005-07-07  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #74975
+       * attribute.cs (orig_sec_assembly): Holds original version of assembly.
+       (ExtractSecurityPermissionSet): Cope with self referencing security
+       attributes properly.
+
+       * driver.cs (SetOutputFile): Made public property OutputFile.
+
+2005-07-07  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75486.
+       * class.cs (TypeContainer.first_nonstatic_field): Rename from
+       has_nonstatic_fields.  Make into a FieldBase pointer.
+       (TypeContainer.AddField): Add CS0282 check.
+       (TypeContainer.EmitType): Update.
+
+2005-07-06  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-tokenizer.cs (consume_identifier): Do not create strings to
+       compare if they start with __.
+
+2005-07-06  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Switch.SwitchGoverningType): Only look at
+       UserCasts that don't need implicit standard conversions to one of
+       the allowed switch types (Fixes test-322.cs).
+       (LocalInfo.Resolve): Re-enable sanity-test.
+
+2005-07-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-tokenizer.cs (consume_identifier): Detect double undescores
+       
+       * ecore.cs (FieldExpr.AddressOf): Changed volatile error to warning.
+       
+       * expression.cs (Invocation.DoResolve): Report error CS0245 here.
+
+2005-07-06  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75472.
+       * ecore.cs (SimpleName.GetSignatureForError): Add.
+       * expression.cs (MemberAccess.DoResolve): Don't clobber 'expr' field.
+       (MemberAccess.GetSignatureForError): Add.
+
+2005-07-05  Marek Safar  <marek.safar@seznam.cz>
+       The big error and warning messages review.
+       
+       * anonymous.cs,
+       * assign.cs,
+       * attribute.cs,
+       * class.cs,
+       * codegen.cs,
+       * convert.cs,
+       * cs-parser.jay,
+       * cs-tokenizer.cs,
+       * decl.cs,
+       * delegate.cs,
+       * doc.cs,
+       * driver.cs,
+       * ecore.cs,
+       * enum.cs,
+       * expression.cs,
+       * flowanalysis.cs,
+       * iterators.cs,
+       * literal.cs,
+       * location.cs,
+       * modifiers.cs,
+       * namespace.cs,
+       * parameter.cs,
+       * pending.cs,
+       * report.cs,
+       * rootcontext.cs,
+       * statement.cs,
+       * support.cs,
+       * tree.cs,
+       * typemanager.cs: Updated.
+       
+       * class.cs: (MethodCore.SetYields): Moved here to share.
+       (PropertyMethod.Define): Moved iterator setup here.
+       
+       * iterators.cs: Add orig_method to have full access to parent
+       container.
+
+2005-07-05  Raja R Harinath  <rharinath@novell.com>
+
+       Make 'fixed variable' handling standards compliant. Fix #70807, #72729.
+       * ecore.cs (IVariable.VerifyFixed): Remove 'is_expression' parameter.
+       (FieldExpr.VerifyFixed): Ensure that the field is part of a fixed
+       variable of struct type.
+       * expression.cs (Unary.ResolveOperator): Update to change.
+       (Indirection.VerifyFixed): Likewise.
+       (LocalVariableReference.VerifyFixed): A local variable is always fixed.
+       (ParameterReference.VerifyFixed): Value parameters are fixed.
+       (This.VerifyFixed): Treat 'this' as a value parameter.
+       * statement.cs (LocalInfo.IsFixed): Remove.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       * iterators.cs (Iterator.CapturedThisReference.Emit): Use
+       `ec.EmitThis ()' to get the correct scope.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.DoResolve): Don't capture the field if it's
+       instance is a ParameterReference; fixes #75299.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       Reverted Marek's latest patch (r46725):
+       - it contains structural changes which are neither mentioned in
+         the ChangeLog nor explained anywhere; for example the additional
+         argument of EmitContext's and Iterator's .ctor's and the
+         TypeContainer.DefineMembers() change.
+       - structural changes like this should go in in seperate patches
+         and not be hidden in a huge patch which just seems to affect
+         warnings and errors.
+         a big and hard to understand patch.
+       - it breaks iterators and causes regressions, for instance in
+         test-iter-03.cs.      
+
+2005-06-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75412.
+       * expression.cs (Indexers.map): Remove.
+       (Indexers.Append): Filter out inaccessible setters and getters.
+       (IndexerAccess.DoResolve, IndexerAccess.DoResolveLValue): Update.
+
+       Fix #75283.
+       * ecore.cs (MemberExpr.EmitInstance): New.  Add CS0120 check.
+       Refactored from ...
+       (FieldExpr.EmitInstance, PropertyExpr.EmitInstance): ... these.
+       (FieldExpr.Emit, PropertyExpr.Emit): Update.
+       (FieldExpr.EmitAssign, PropertyExpr.EmitAssign): Update.
+       * expression.cs (Invocation.EmitCall): Add CS0120 check.
+
+2005-06-30  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75322
+       * class.cs (FieldBase.GetInitializerExpression): One more field
+       for backup.
+
+2005-06-28  Miguel de Icaza  <miguel@novell.com>
+
+       * pending.cs: Do not define a proxy if the base method is virtual,
+       it will be picked up by the runtime (bug 75270).
+
+2005-06-08  Martin Baulig  <martin@ximian.com>
+
+       The big Iterators rewrite :-)
+
+       * iterators.cs: Rewrite this to use the anonymous methods framework.
+
+       * rootcontext.cs (RootContext.DefineTypes): Define Delegates
+       before the TypeContainers; see 2test-21.cs.
+
+       * class.cs
+       (TypeContainer.DefineType): Don't create a new EmitContext if we
+       already have one (this only happens if we're an Iterator).
+       (TypeContainer.Define): Also call Define() on all our iterators.
+       (Method.CreateEmitContext): Added support for iterators.
+
+       * anonymous.cs
+       (AnonymousContainer): New abstract base class for `AnonymousMethod'.
+       (AnonymousContainer.CreateMethodHost): Moved here from
+       AnonymousMethod and made abstract.
+       (AnonymousContainer.CreateScopeType): New abstract method.
+       (AnonymousContainer.IsIterator): New public property.
+       (ScopeInfo.EmitScopeType): Call CreateScopeType() on our Host to
+       get the ScopeTypeBuilder rather than manually defining it here. 
+       (ScopeInfo.EmitScopeInstance): New public method; correctly handle
+       iterators here.
+
+       * driver.cs (Driver.MainDriver): Call TypeManager.InitCodeHelpers()
+       before RootContext.DefineTypes().
+
+       * codegen.cs (EmitContext.RemapToProxy): Removed.
+       (EmitContext.CurrentAnonymousMethod): Changed type from
+       AnonymousMethod -> AnonymousContainer.
+       (EmitContext.ResolveTopBlock): Protect from being called twice.
+       (EmitContext.MapVariable, RemapParameter(LValue)): Removed.
+       (EmitContext.EmitThis): Removed the iterators hacks; use the
+       anonymous methods framework for that.
+
+       * statement.cs
+       (ToplevelBlock.Container): Make this a property, not a field.
+       (ToplevelBlock.ReParent): New public method; move the
+       ToplevelBlock into a new container.
+       (Foreach.TemporaryVariable): Simplify.
+
+2005-06-05  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (LocalInfo.CompilerGenerated): New flag.
+       (Block.AddTemporaryVariable): New public method; creates a new
+       `LocalInfo' for a temporary variable.
+       (Block.EmitMeta): Create the LocalBuilders for all the temporary
+       variables here.
+       (Foreach.TemporaryVariable): Use Block.AddTemporaryVariable() for
+       non-iterator variables.
+
+2005-06-05  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Foreach.TemporaryVariable): Create the
+       LocalBuilder in the Emit phase and not in Resolve since in some
+       situations, we don't have an ILGenerator during Resolve; see
+       2test-19.cs for an example.
+
+2005-06-04  Martin Baulig  <martin@ximian.com>
+
+       **** Merged r45395 from GCS ****
+
+       The big Foreach rewrite - Part II.
+
+       * typemanager.cs (TypeManager.object_getcurrent_void): Replaced
+       with `PropertyInfo ienumerator_getcurrent'.
+
+       * codegen.cs (VariableStorage): Removed.
+
+       * statement.cs
+       (Foreach): Derive from Statement, not ExceptionStatement.
+       (Foreach.CollectionForeach): New nested class.  Moved all the code
+       dealing with collection foreach here.
+       (Foreach.ForeachHelperMethods): Removed.
+       (Foreach.TemporaryVariable): Implement IMemoryLocation.
+
+2005-05-23  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Try.DoResolve): Don't create a `finally' if we
+       don't need to.  Fix #75014.
+
+2005-05-20  Martin Baulig  <martin@ximian.com>
+
+       Merged r44808 from GMCS.
+
+       * class.cs (TypeContainer.CircularDepException): Removed.
+       (TypeContainer.DefineType): Removed the `InTransit' stuff.
+       (TypeContainer.CheckRecursiveDefinition): Check for circular class
+       (CS0146) and interface (CS0529) dependencies here.
+
+2005-06-21  Raja R Harinath  <rharinath@novell.com>
+
+       * expression.cs (Invocation.EmitCall): Fix initialization
+       'this_call' to reflect current behaviour.  Fix indentation.
+
+       * convert.cs (FindMostEncompassedType): Add two trivial special
+       cases (number_of_types == 0 || number_of_types == 1).
+       (FindMostEncompasingType): Likewise.
+
+2005-06-17  Raja R Harinath  <rharinath@novell.com>
+
+       Some cleanups preparing for the fix of #75283.
+       * ecore.cs (PropertyExpr.InstanceResolve): Tighten conditions for
+       error testing.
+       (EventExpr.InstanceResolve): Likewise.
+       (EventExpr.DoResolve): Remove redundant checks.
+
+2005-06-10  Duncan Mak  <duncan@novell.com>
+
+       * cs-tokenizer.cs (process_directives): New flag for controlling
+       the processing of preprocessor directives.
+       (x_token): After seeing a '#', return Token.NONE instead of going
+       to handle_preprocessing_directive() when not processing
+       directives. This avoids unnecessary processing during the token peek in
+       is_punct().
+
+       This fixes #74939.
+
+       * cs-tokenizer.cs (handle_preprocessing_directive, xtoken): Use
+       the existing error reporting methods instead of Report.Error.
+
+       * convert.cs (priv_fmt_expr): Remove. It's not needed anymore
+       after Raja's rewrite.
+
+2005-06-08  Miguel de Icaza  <miguel@novell.com>
+
+       * class.cs: Small fix.
+
+2005-06-08  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75160.
+       * class.cs (GetPartialBases): Fix return value check of
+       part.GetClassBases.
+
+2005-06-07  Raja R Harinath  <rharinath@novell.com>
+
+       Ensure that partial classes are registered in their enclosing
+       namespace.  Initial part of fix of #75160.
+       * tree.cs (Tree.RecordDecl): Add new namespace argument.
+       Register declspace with namespace here, not in
+       DeclSpace.RecordDecl.
+       * cs-parser.jay: Pass namespace to RecordDecl.
+       * class.cs (PartialContainer.Create): Likewise.
+       (ClassPart.DefineType): New sanity-check.  Throws an exception if
+       called.
+       * decl.cs (Declspace.RecordDecl): Remove.
+       * namespace.cs (NamespaceEntry.DefineName): Remove.
+
+2005-06-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * rootcontext.cs: Reset TargetExt as well.
+
+2005-06-03  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (Expression.Resolve): Emit CS0654 error when
+       -langversion:ISO-1.
+
+2005-06-02  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75080, cs0119.cs.
+       * ecore.cs (Expression.ExprClassToResolveFlags): New.  Broken out
+       of ...
+       (Expression.Resolve): ... this.  Use it.  Remove bogus code
+       allowing ExprClass.Type and ExprClass.Namespace for
+       ResolveFlags.VariableOrValue.
+       (Expression.Resolve) [1-argument variant]: Change default resolve
+       flags based on language version.
+       (Expression.Error_UnexpectedKind): Use a simple string array
+       rather than an ArrayList.
+       * expression.cs (TypeOf.DoResolve): Set eclass to ExprClass.Value,
+       not ExprClass.Type.
+       (TypeOfVoid.DoResolve): Likewise.
+       (MemberAccess.DoResolve) [3-argument variant]: Make private.  Drop
+       flags argument -- it always has the same value.
+
+2005-05-31  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75081.
+       * ecore.cs (Expression.ResolveLValue): Add a Location parameter.
+       Use it in the error message.
+       * assign.cs, expression.cs, statement.cs: Update.
+
+2005-05-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75088.
+       * ecore.cs (Expression.MemberLookupFailed): Add CS0122 check in
+       the "almostMatchedMember" case too.
+       * typemanager.cs (Closure.CheckValidFamilyAccess): Add anything
+       that failed the accessibility checks to 'almost_match'.
+
+2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
+
+       * attribute.cs: Use internal MethodBuilder methods to set
+       ExactSpelling and SetLastError on PInvoke methods, instead
+       of passing them via charset.  Fixes #75060.
+
+2005-05-27  Raja R Harinath  <rharinath@novell.com>
+
+       * parameter.cs (Parameter): Remove TODO comment.
+       (Parameter.DefineParameter): Remove Location parameter.
+       (Parameters.LabelParameters): Likewise.
+       * class.cs (Constructor.Emit): Update to change.
+       (MethodData.Emit): Likewise.
+       * anonymous.cs (AnonymousMethod.EmitMethod): Likewise.  
+       * delegate.cs (Delegate.Define, Delegate.Emit): Likewise.
+
+2005-05-27  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * parameter.cs,
+         Removed Parameters.Location and added Parameter.Location instead.
+         Removed Location parameter from Emit() and GetSignature().
+       * anonymous.cs,
+         class.cs,
+         cs-parser.jay,
+         delegate.cs,
+         iterators.cs,
+         statement.cs :
+         Modified all related calls.
+
+2005-05-26  Raja R Harinath  <rharinath@novell.com>
+
+       Improve user-defined conversion handling.
+       * convert.cs (GetConversionOperators): Rewrite.  Return only the
+       applicable operators.
+       (AddConversionOperators): New.  Helper for GetConversionOperators.
+       (FindMostEncompassedType, FindMostEncompassingType): Verify that
+       there is only one most encompassed/encompassing type.
+       (FindMostSpecificSource, FindMostSpecificTarget): Remove
+       "applicable operator" handling.
+       (UserConversion): Move cache here from GetConversionOperators.
+       Directly cache the chosen operator, rather than the whole
+       MethodGroup.
+       (ExplicitNumericConversion): Fix buggy implementation of Decimal
+       case.  Allow conversion of decimal to sbyte and byte too.
+       * expression.cs (EmptyExpression.Grab, EmptyExpression.Release):
+       New static methods.  Used to avoid allocating EmptyExpressions in
+       convert.cs.
+
 2005-05-24  Duncan Mak  <duncan@novell.com>
 
        * ecore.cs (CastFromDecimal): New class for casting a decimal to