-2004-07-12 Martin Baulig <martin@ximian.com>
+2004-07-28 Lluis Sanchez Gual <lluis@novell.com>
+
+ * Makefile: Install mcs.exe.config file together with mcs.exe.
+ * mcs.exe.config: Added supportedRuntime entry to make sure it runs in the
+ correct runtime version.
+
+2004-07-25 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-07-25 Martin Baulig <martin@ximian.com>
+
+ * class.cs
+ (TypeContainer.RegisterOrder): Removed, this was unused.
+ (TypeContainer, interface_order): Removed.
+ (TypeContainer.AddClass, AddStruct, AddInterface): Take a
+ TypeContainer as argument since we can also be called with a
+ `PartialContainer' for a partial class/struct/interface.
+ (TypeContainer.IsInterface): Use `Kind == Kind.Interface' instead
+ of checking whether we're an `Interface' - we could be a
+ `PartialContainer'.
+ (PartialContainer.Register): Override; call
+ AddClass()/AddStruct()/AddInterface() on our parent.
+
+ * cs-parser.jay (interface_member_declaration): Add things to the
+ `current_container', not the `current_class'.
+
+ * rootcontext.cs (RegisterOrder): The overloaded version which
+ takes an `Interface' was unused, removed.
+
+ * typemanager.cs (TypeManager.LookupInterface): Return a
+ `TypeContainer', not an `Interface'.
+ (TypeManager.IsInterfaceType): The `builder_to_declspace' may
+ contain a `PartialContainer' for an interface, so check it's
+ `Kind' to figure out what it is.
+
+2004-07-25 Martin Baulig <martin@ximian.com>
+
+ * class.cs (Class.DefaultTypeAttributes): New public constant.
+ (Struct.DefaultTypeAttributes): Likewise.
+ (Interface.DefaultTypeAttributes): Likewise.
+ (PartialContainer.TypeAttr): Override this and add the
+ DefaultTypeAttributes.
+
+2004-07-25 Martin Baulig <martin@ximian.com>
+
+ * decl.cs (DeclSpace.Emit): Removed the `TypeContainer' argument,
+ we can just use the `Parent' field instead.
+
+2004-07-25 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.Emit): Renamed to EmitType().
+
+2004-07-25 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.DefineMembers): Call DefineMembers() on
+ our parts before defining any methods.
+ (TypeContainer.VerifyImplements): Make this virtual.
+ (ClassPart.VerifyImplements): Override and call VerifyImplements()
+ on our PartialContainer.
+
+2004-07-25 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs (Iterator.Define): Renamed to DefineIterator().
+
+ * decl.cs (DeclSpace.Define): Removed the `TypeContainer'
+ argument, we can just use the `Parent' field instead.
+
+ * class.cs
+ (MemberBase.CheckBase): Removed the `TypeContainer' argument.
+ (MemberBase.DoDefine): Likewise.
+
+2004-07-24 Martin Baulig <martin@ximian.com>
+
+ * decl.cs (MemberCore.Parent): New public field.
+ (DeclSpace.Parent): Moved to MemberCore.
+
+ * class.cs (MethodCore.ds): Removed; use `Parent' instead.
+ (MemberBase.ctor): Added TypeContainer argument, pass it to our
+ parent's .ctor.
+ (FieldBase, Field, Operator): Likewise.
+ (EventProperty.ctor): Take a TypeContainer instead of a DeclSpace.
+ (EventField, Event): Likewise.
+
+2004-07-23 Martin Baulig <martin@ximian.com>
+
+ * class.cs (PartialContainer): New public class.
+ (ClassPart): New public class.
+ (TypeContainer): Added support for partial classes.
+ (TypeContainer.GetClassBases): Splitted some of the functionality
+ out into GetNormalBases() and GetPartialBases().
+
+ * cs-tokenizer.cs (Token.PARTIAL): New token.
+ (Tokenizer.consume_identifier): Added some hacks to recognize
+ `partial', but only if it's immediately followed by `class',
+ `struct' or `interface'.
+
+ * cs-parser.jay: Added support for partial clases.
+
+2004-07-23 Martin Baulig <martin@ximian.com>
+
+ * class.cs (MethodCore.ds): Made this a `TypeContainer' instead of
+ a `DeclSpace' and also made it readonly.
+ (MethodCore.ctor): Take a TypeContainer instead of a DeclSpace.
+ (Method.ctor, Constructor.ctor, Destruktor.ctor): Likewise.
+ (PropertyBase.ctor, Property.ctor, Indexer.ctor): Likewise.
+
+ * cs-parser.jay: Pass the `current_class', not the
+ `current_container' (at the moment, this is still the same thing)
+ to a new Method, Property, Event, Indexer or Constructor.
+
+2004-07-23 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay (CSharpParser): Added a new `current_class' field
+ and removed the `current_interface' one.
+ (struct_declaration, class_declaration, interface_declaration):
+ Set `current_class' to the newly created class/struct/interface;
+ set their `Bases' and call Register() before parsing their body.
+
+2004-07-23 Martin Baulig <martin@ximian.com>
+
+ * class.cs (Kind): New public enum.
+ (TypeContainer): Made this class abstract.
+ (TypeContainer.Kind): New public readonly field.
+ (TypeContainer.CheckDef): New public method; moved here from
+ cs-parser.jay.
+ (TypeContainer.Register): New public abstract method.
+ (TypeContainer.GetPendingImplementations): New public abstract
+ method.
+ (TypeContainer.GetClassBases): Removed the `is_class' and
+ `is_iface' parameters.
+ (TypeContainer.DefineNestedTypes): Formerly known as
+ DoDefineType().
+ (ClassOrStruct): Made this class abstract.
+
+ * tree.cs (RootTypes): New public type.
+
+2004-07-20 Martin Baulig <martin@ximian.com>
+
+ * tree.cs (Tree.RecordNamespace): Removed.
+ (Tree.Namespaces): Removed.
+
+ * rootcontext.cs (RootContext.IsNamespace): Removed.
+
+ * cs-parser.jay (namespace_declaration): Just create a new
+ NamespaceEntry here.
+
+2004-07-20 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (ExceptionStatement): New abstract class. This is
+ now used as a base class for everyone who's using `finally'.
+ (Using.ResolveLocalVariableDecls): Actually ResolveLValue() all
+ our local variables before using them.
+
+ * flowanalysis.cs (FlowBranching.StealFinallyClauses): New public
+ virtual method. This is used by Yield.Resolve() to "steal" an
+ outer block's `finally' clauses.
+ (FlowBranchingException): The .ctor now takes an ExceptionStatement
+ argument.
+
+ * codegen.cs (EmitContext.StartFlowBranching): Added overloaded
+ version which takes an ExceptionStatement. This version must be
+ used to create exception branchings.
+
+ * iterator.cs
+ (Yield.Resolve): "Steal" all `finally' clauses from containing blocks.
+ (Iterator.EmitMoveNext): Added exception support; protect the
+ block with a `fault' clause, properly handle 'finally' clauses.
+ (Iterator.EmitDispose): Run all the `finally' clauses here.
+
+2004-07-20 Martin Baulig <martin@ximian.com>
+
+ * iterator.cs: This is the first of a set of changes in the
+ iterator code. Match the spec more closely: if we're an
+ IEnumerable, then GetEnumerator() must be called. The first time
+ GetEnumerator() is called, it returns the current instance; all
+ subsequent invocations (if any) must create a copy.
+
+2004-07-19 Miguel de Icaza <miguel@ximian.com>
+
+ * expression.cs: Resolve the constant expression before returning
+ it.
+
+2004-07-19 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs (Iterator.MapVariable): Don't define fields twice.
+ (Iterator.MoveNextMethod.DoEmit): Use `TypeManager.int32_type' as
+ the return type of the new EmitContext.
+
+2004-07-18 Martin Baulig <martin@ximian.com>
+
+ * class.cs (Property.Define): Fix iterators.
+
+ * iterators.cs (Iterator.Define): Moved the
+ `container.AddInterator (this)' call here from the .ctor; only do
+ it if we resolved successfully.
+
+2004-07-17 Miguel de Icaza <miguel@ximian.com>
+
+ * cs-tokenizer.cs (handle_preprocessing_directive): Do not return
+ `true' for preprocessing directives that we parse. The return
+ value indicates whether we should return to regular tokenizing or
+ not, not whether it was parsed successfully.
+
+ In the past if we were in: #if false ... #line #endif, we would
+ resume parsing after `#line'. See bug 61604.
+
+ * typemanager.cs: Removed an old hack from Gonzalo to get corlib
+ building: IsEnumType should return true only for enums, not for
+ enums or System.Enum itself. This fixes #61593.
+
+ Likely what happened is that corlib was wrong: mcs depended on
+ this bug in some places. The bug got fixed, we had to add the
+ hack, which caused bug 61593.
+
+ * expression.cs (ArrayAccess.GetStoreOpCode): Remove an old hack
+ that was a workaround for the older conditions.
+
+2004-07-16 Ben Maurer <bmaurer@ximian.com>
+
+ * assign.cs: IAssignMethod has a new interface, as documented
+ inline. All assignment code now uses this new api.
+
+ * ecore.cs, expression.cs: All classes which implement
+ IAssignMethod now use the new interface.
+
+ * expression.cs (Invocation): add a hack to EmitCall so that
+ IndexerAccess can be the target of a compound assignment without
+ evaluating its arguments twice.
+
+ * statement.cs: Handle changes in Invocation api.
+
+2004-07-16 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs: Rewrote this. We're now using one single Proxy
+ class for both the IEnumerable and the IEnumerator interface and
+ `Iterator' derives from Class so we can use the high-level API.
+
+ * class.cs (TypeContainer.AddIterator): New method.
+ (TypeContainer.DoDefineType): New protected virtual method, which
+ is called from DefineType().
+ (TypeContainer.DoDefineMembers): Call DefineType() and
+ DefineMembers() on all our iterators.
+ (TypeContainer.Emit): Call Emit() on all our iterators.
+ (TypeContainer.CloseType): Call CloseType() on all our iterators.
+
+ * codegen.cs (EmitContext.CurrentIterator): New public field.
+
+2004-07-15 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs
+ (TypeManager.not_supported_exception_type): New type.
+
+2004-07-14 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs: Use real error numbers.
+
+2004-07-14 Martin Baulig <martin@ximian.com>
+
+ * iterator.cs (IteratorHandle.IsIEnumerable): The spec explicitly
+ requires this to be a System.Collection.IEnumerable and not a
+ class implementing that interface.
+ (IteratorHandle.IsIEnumerator): Likewise, for IEnumerator.
+
+2004-07-13 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs: Fixed previous fix, it broke some error tests.
+
+2004-07-12 Martin Baulig <martin@ximian.com>
+
+ * enum.cs (Enum.Define): Call Emit() to emit the attributes.
+ Fixes #61293.
+
2004-07-09 Miguel de Icaza <miguel@ximian.com>
* assign.cs (LocalTemporary): Add new argument: is_address,If