* Makefile: Install mcs.exe.config file together with mcs.exe.
[mono.git] / mcs / mcs / ChangeLog
index 92490407e6a09101ef508e141c828da375cb8cc2..d440662ead6503535b8ed090a652ca5579c742c2 100755 (executable)
@@ -1,7 +1,693 @@
+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
+       `is_address' is true, then the value that we store is the address
+       to the real value, and not the value itself.
+       
+       * ecore.cs (PropertyExpr): use the new local temporary
+       stuff to allow us to handle X.Y += z (where X is a struct)
+
+2004-07-08  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Lock.Resolve): Set ec.NeedReturnLabel() if we do
+       not always return, just like we're doing in Using.Resolve().
+
+2004-07-07  Miguel de Icaza  <miguel@ximian.com>
+
+       * cs-parser.jay (fixed_statement): flag this as Pinned.
+
+2004-07-06  Miguel de Icaza  <miguel@ximian.com>
+
+       * typemanager.cs (TypeManager): Removed MakePinned method, this
+       mechanism is replaced with the .NET 2.x compatible mechanism of
+       calling `ILGenerator.DeclareLocal (Type t, bool pinned)'.
+
+       * statement.cs (LocalInfo): Remove MakePinned, add Pinned property 
+       Rename `Fixed' to `Pinned' as a flag, to distinguish from the
+       `IsFixed' property which has a different meaning.
+
+2004-07-02  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (DoSimpleNameResolve): Expand CS0038 check to all names
+       visible from inside a nested class, not just the names of the
+       immediately enclosing class.
+       Fix for bug #60730.
+
+2004-06-24  Raja R Harinath  <rharinath@novell.com>
+
+       * expression.cs (BetterConversion): Remove buggy special-case
+       handling of "implicit constant expression conversions".  At this
+       point, we already know that the conversion is possible -- we're
+       only checking to see which is better.
+
+2004-06-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Added error CS0210 test.
+
+2004-06-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Added error CS0134 test.
+
+2004-06-24  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix bug #52507
+       * cs-parser.jay: Added error CS0145 test.
+
+2004-06-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Operator.Define): Added test for errors CS0553, CS0554.
+
+2004-06-23  Ben Maurer  <bmaurer@ximian.com>
+       
+       * expression.cs (StackAlloc.Resolve): The argument may not
+       be a constant; deal with this case.
+       
+2004-06-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (IndexerName_GetIndexerName): Renamed to
+       GetIndexerAttributeValue.
+       (ScanForIndexerName): Renamed to GetIndexerNameAttribute.
+
+       * class.cs (Indexer.Define): Added error tests for CS0415,
+       CS0609.
+
+2004-06-23  Miguel de Icaza  <miguel@ximian.com>
+
+       * attribute.cs (Attribute.Resolve): Keep field code in sync with
+       property code.
+
+2004-06-23  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (UsageVector.MergeChild): If we're a loop and we
+       neither return nor throw, reset the barrier as well.  Fixes #60457.
+
+2004-06-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs : EventAttributes is now set to None by default.
+         This fixes bug #60459.
+
+2004-06-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix bug #60219
+       * class.cs (ConstructorInitializer.GetOverloadedConstructor):
+       Don't throw exception but return null (it's sufficient now).
+
+2004-06-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * typemanager.cs (GetArgumentTypes): Faster implementation.
+
+2004-06-18  Martin Baulig  <martin@ximian.com>
+
+       * attribute.cs (Attribute.Resolve): Check whether we're an
+       EmptyCast which a Constant child.  Fixes #60333.
+
+2004-06-17  Ben Maurer  <bmaurer@ximian.com>
+
+       * statement.cs (EmitCollectionForeach): Account for the fact that
+       not all valuetypes are in areas which we can take the address of.
+       For these variables, we store to a temporary variable. Also, make
+       sure that we dont emit a `callvirt' on a valuetype method.
+
+2004-06-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (StackAlloc.DoReSolve): Added test for
+       negative parameter (CS0247).
+
+2004-06-15  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix bug #59792
+       * class.cs: (Event.DelegateMethod.Emit): Added synchronization flag.
+
+2004-06-15  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix bug #59781
+       * expression.cs: (Binary.DoNumericPromotions): Added conversion for
+       ulong.
+
+2004-06-14  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix bug #58254 & cs1555.cs, cs1556.cs
+       * driver.cs (MainDriver): Added tests for errors CS1555, CS1556.
+
+2004-06-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Added error CS1669 test for indexers.
+
+2004-06-11  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Invocation.IsParamsMethodApplicable): We need to
+       call this twice: for params and varargs methods.
+
+2004-06-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs:
+       (FieldBase.DoDefine, PropertyBase.DoDefine): Added error test CS0610.
+
+2004-06-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.GetValidTargets): Made public.
+
+       * class.cs: 
+       (AbstractPropertyEventMethod): New class for better code sharing.
+       (AbstractPropertyEventMethod.ApplyAttributeBuilder): Add error
+       CS1667 report.
+       (PropertyMethod, DelegateMethod): Derived from AbstractPropertyEventMethod
+
+2004-06-11  Raja R Harinath  <rharinath@novell.com>
+
+       Fix bug #59477.
+       * ecore.cs (ResolveFlags): Add new 'Intermediate' flag to tell
+       that the call to Resolve is part of a MemberAccess.
+       (Expression.Resolve): Use it for SimpleName resolution.
+       (SimpleName.SimpleNameResolve, SimpleName.DoResolveAllowStatic):
+       Add 'intermediate' boolean argument.
+       (SimpleName.DoSimpleNameResolve): Likewise.  Use it to disable an
+       error message when the SimpleName can be resolved ambiguously
+       between an expression and a type.
+       * expression.cs (MemberAccess.IdenticalNameAndTypeName): Make
+       public.
+       (MemberAccess.Resolve): Pass 'Intermediate' flag to the Resolve()
+       call on the left-side.
+
+2004-06-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs:
+       (MethodCore.VerifyClsCompliance): Added test for error CS3000.
+
+2004-06-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.Emit): Fixed error CS0579 reporting.
+
+2004-06-11  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Invocation.EmitCall): Use OpCodes.Callvirt for
+       varargs methods if applicable.
+
+2004-06-11  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Invocation.EmitCall): Don't use
+       `method.CallingConvention == CallingConventions.VarArgs' since the
+       method could also have `CallingConventions.HasThis'.
+
+2004-06-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Event.GetSignatureForError): Implemented.
+       Fixed crash in error test cs3010.cs
+
+2004-06-10  Miguel de Icaza  <miguel@ximian.com>
+
+       * cs-tokenizer.cs: Change the way we track __arglist to be
+       consistent with the other keywords.
+
+2004-06-09  Miguel de Icaza  <miguel@ximian.com>
+
+       * codegen.cs: FAQ avoider: turn 1577 into a warning for now until
+       tomorrow.
+
+2004-06-09  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * codegen.cs: Check that all referenced assemblies have a strongname
+       before strongnaming the compiled assembly. If not report error CS1577.
+       Fix bug #56563. Patch by Jackson Harper.
+       * typemanager.cs: Added a method to return all referenced assemblies.
+       Fix bug #56563. Patch by Jackson Harper.
+
+2004-06-08  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs:
+       (Method.ApplyAttributeBuilder): Moved and added conditional
+       attribute error tests (CS0577, CS0578, CS0243, CS0582, CS0629).
+
+       * delegate.cs:
+       (DelegateCreation.ResolveMethodGroupExpr): Added error CS1618 test.
+
+2004-06-08  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed #59640
+       * class.cs: (EventField.attribute_targets): Changed default target.
+
+2004-06-08  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Invocation.EmitCall): Enable varargs methods.
+
+2004-06-08  Martin Baulig  <martin@ximian.com>
+
+       * rootcontext.cs (ResolveCore): Added "System.RuntimeArgumentHandle".
+
+2004-06-07  Martin Baulig  <martin@ximian.com>
+
+       Added support for varargs methods.
+
+       * cs-tokenizer.cs (Token.ARGLIST): New token for the `__arglist'
+       keyword.
+
+       * cs-parser.jay: Added support for `__arglist'.
+
+       * decl.cs (MemberCache.AddMethods): Don't ignore varargs methods.
+
+       * expression.cs (Argument.AType): Added `ArgList'.
+       (Invocation): Added support for varargs methods.
+       (ArglistAccess): New public class.
+       (Arglist): New public class.
+
+       * parameter.cs (Parameter.Modifier): Added `ARGLIST'.
+
+       * statement.cs (Block.Flags): Added `HasVarargs'.  We set this on
+       a method's top-level block if the method has varargs.
+
+       * support.cs (ReflectionParameters, InternalParameters): Added
+       support for varargs methods.    
+
+2004-06-07  Miguel de Icaza  <miguel@ximian.com>
+
+       * class.cs: Provide location in indexer error report.
+
+       * driver.cs: Use standard names.
+
+       * namespace.cs: Catch the use of using after a namespace has been
+       declared also on using aliases.
+
+2004-06-03  Raja R Harinath  <rharinath@novell.com>
+
+       Bug #50820.
+       * typemanager.cs (closure_private_ok, closure_invocation_type)
+       (closure_qualifier_type, closure_invocation_assembly)
+       (FilterWithClosure): Move to ...
+       (Closure): New internal nested class.
+       (Closure.CheckValidFamilyAccess): Split out from Closure.Filter.
+       (MemberLookup, RealMemberLookup): Add new almost_match parameter.
+       * ecore.cs (almostMatchedMembers): New variable to help report CS1540.
+       (MemberLookup, MemberLookupFailed): Use it.
+       * expression.cs (New.DoResolve): Treat the lookup for the
+       constructor as being qualified by the 'new'ed type.
+       (Indexers.GetIndexersForTypeOrInterface): Update.
+
+2004-06-03  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs
+       (GetConditionalAttributeValue): New method. Returns
+       condition of ConditionalAttribute.
+       (SearchMulti): New method.  Returns all attributes of type 't'.
+       Use it when attribute is AllowMultiple = true.
+       (IsConditionalMethodExcluded): New method.
+
+       * class.cs
+       (Method.IsExcluded): Implemented. Returns true if method has conditional
+       attribute and the conditions is not defined (method is excluded).
+       (IMethodData): Extended interface for ConditionalAttribute support.
+       (PropertyMethod.IsExcluded): Implemented.
+
+       * decl.cs
+       (MemberCore.Flags): Excluded_Undetected, Excluded new caching flags.
+
+       * expression.cs
+       (Invocation.IsMethodExcluded): Checks the ConditionalAttribute
+       on the method.
+
+2004-06-02 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * expression.cs (ArrayCreationExpression): Make this just an
+       `expression'. It can't be a statement, so the code here was
+       dead.
+
+2004-06-02  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed #59072
+       * typemanager.cs (GetFullNameSignature): New method for
+       MethodBase types.
+
+2004-06-02  Marek Safar  <marek.safar@seznam.cz>
+
+       Fixed #56452
+       * class.cs (MemberBase.GetSignatureForError): New virtual method.
+       Use this method when MethodBuilder is null.
+       (MethodData.DefineMethodBuilder): Encapsulated code to the new method.
+       Added test for error CS0626 (MONO reports error for this situation).
+       (IMethodData.GetSignatureForError): Extended interface.
+
+2004-06-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs
+       (AttributeTester.GetObsoleteAttribute): Returns instance of
+       ObsoleteAttribute when type is obsolete.
+
+       * class.cs
+       (TypeContainer.VerifyObsoleteAttribute): Override.
+       (Method.GetSignatureForError): New method for usage when MethodBuilder is null.
+       (MethodCode.VerifyObsoleteAttribute): Override.
+       (MemberBase.VerifyObsoleteAttribute): Override.
+
+       * decl.cs
+       (MemberCore.CheckUsageOfObsoleteAttribute): Tests presence of ObsoleteAttribute
+       and report proper error.
+
+       *delegate.cs
+       Delegate.VerifyObsoleteAttribute): Override.
+
+       * ecore.cs
+       (Expression.CheckObsoleteAttribute): Tests presence of ObsoleteAttribute
+       and report proper error.
+       (FieldExpr.DoResolve): Added tests for ObsoleteAttribute.
+
+       * enum.cs
+       (Enum.GetObsoleteAttribute): Returns ObsoleteAttribute for both enum type
+       and enum member.
+
+       * expression.cs
+       (Probe.DoResolve, Cast.DoResolve, LocalVariableReference.DoResolve,
+       New.DoResolve, SizeOf.DoResolve, TypeOf.DoResolce, MemberAccess.DoResolve):
+       Added test for ObsoleteAttribute.
+
+       * statement.cs
+       (Catch): Derived from Statement.
+
+2004-06-01  Marek Safar  <marek.safar@seznam.cz>
+       Fixed bug #59071 & cs0160.cs
+       * statement.cs (Try.Resolve): Check here whether order of catch
+       clauses matches their dependencies.
+
+2004-05-31  Miguel de Icaza  <miguel@ximian.com>
+
+       * Reverted patch to namespace.cs (Use lookuptypedirect).  This
+       caused a regression: #59343.  Referencing nested classes from an
+       assembly stopped working.
+
+2004-05-31  Martin Baulig  <martin@ximian.com>
+
+       MCS is now frozen for beta 2.
+
 2004-05-30 Ben Maurer  <bmaurer@users.sourceforge.net>
 
        * convert.cs: add a trivial cache for overload operator resolution.
 
+2004-05-30 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * decl.cs: If possible, use lookuptypedirect here. We can only do
+       this if there is no `.' after the namespace. Avoids using
+       LookupType, which does lots of slow processing.
+       (FindNestedType) New method, does what it says :-).
+       * namespace.cs: use LookupTypeDirect.
+       * rootcontext.cs: use membercache, if possible.
+       * typemanager.cs (LookupTypeDirect): Cache negative hits too.
+
+2004-05-30 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * expression.cs:
+       According to the spec, 
+
+       In a member access of the form E.I, if E is a single identifier,
+       and if the meaning of E as a simple-name (§7.5.2) is a constant,
+       field, property, localvariable, or parameter with the same type as
+       the meaning of E as a type-name (§3.8), then both possible
+       meanings of E are permitted.
+
+       We did not check that E as a simple-name had the same type as E as
+       a type name.
+
+       This trivial check gives us 5-7% on bootstrap time.
+
+2004-05-30 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * expression.cs (Invocation.OverloadResolve): Avoid the
+       use of hashtables and boxing here by allocating on demand.
+
 2004-05-30  Martin Baulig  <martin@ximian.com>
 
        * rootcontext.cs (RootContext.LookupType): Don't cache things if
        don't have any dots.  Fixes #52622, added cs0246-8.cs.
 
        * namespace.cs (NamespaceEntry.Lookup): Likewise.
-
+        
 2004-05-23  Marek Safar  <marek.safar@seznam.cz>
 
        * class.cs (MemberBase.Define): Reuse MemberType member for 
        (MethodData.ApplyAttributes): Take an EmitContext instead of a
        DeclSpace.
 
-2004-04-20  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-05-19  Marek Safar  <marek.safar@seznam.cz>
 
        Fix bug #58688 (MCS does not report error when the same attribute