+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.
+