Fix the build
[mono.git] / mcs / mcs / ChangeLog
index a1953cf9ae279968cf642c9ca853605ef2aa18a7..32d74c68497a89fb20cbbeb520a6ad537e4cf138 100644 (file)
@@ -1,3 +1,309 @@
+2007-03-11  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs, parameter.cs, typemanager.cs: Another gmcs fix to work with
+       any mscorlib.
+
+2007-03-10  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs, parameter.cs: Unified parameters verification.
+
+2007-03-08  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay (constructor_header): Pass the location to the
+       newly created TopLevelBlock.
+
+2007-03-07  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Block.Resolve): Don't crash on error; bug #80715.
+
+2007-03-06  Miguel de Icaza  <miguel@novell.com>
+
+       * convert.cs (ExplicitReferenceConversionExists): Sync this method
+       with the changes from David, fixes the build.
+
+2007-03-05  David Mitchell  <dmitchell@logos.com>
+
+       * convert.cs: Implement From System.Collecitons.Generic.IList<T>
+       and its base interfaces to a one-dimensional array type S[],
+       provided there is an implicit or explicit reference conversion
+       from S to T.
+
+2007-03-03  Marek Safar  <marek.safar@gmail.com>
+
+       * cs-tokenizer.cs: Implemented basic linq grammar.
+
+       * driver.cs: Set linq lang version on demand.
+
+2007-02-26  Marek Safar  <marek.safar@gmail.com>
+
+       * cs-parser.jay, expression.cs: Compile empty __arglist correctly.
+
+2007-02-25  Marek Safar  <marek.safar@gmail.com>
+
+       * attribute.cs: Replaced DefinePInvoke in favor of S.R.E implementation
+       (Fixes #80455)
+
+       * class.cs (InterfaceMemberBase): Share common `extern' modifier checks
+       here.
+       Check property and event extern attributes.
+
+       * codegen.cs (ModuleClass): HasDefaultCharSet when module defined global
+       charset.
+
+2007-02-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #80407
+       * ecore.cs: Don't report ambiguity error when methods have same parent.
+
+2007-02-23  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #80878
+       * class.cs, cs-parser.jay: Event property can host anonymous methods.
+
+2007-02-22  Marek Safar  <marek.safar@gmail.com>
+
+       * attribute.cs: Enable ExtensionAttribute presence test.
+
+2007-02-22  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs: Warn about missing GetHashCode only when Equals is override.
+
+       * decl.cs: Check accessibility of type arguments.
+
+       * typemanager.cs: Correctly report nullable array.
+
+2007-02-20  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs, report.cs: Capture more details when things go wrong.
+
+2007-02-20  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #80650
+       * cs-parser.jay: Anonymous container starts at constructor declaration
+       and not at block beginning because it has to be usable in constructor
+       initializer.
+
+       * statement.cs: Use context location and not block one for error reporting.
+
+2007-02-18  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #78712
+       * class.cs.cs, decl.cs, ecore.cs: LookupAnyGeneric inspects nested types
+       too.
+
+2007-02-18  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #80493 by Atsushi Enomoto
+       * cs-parser.jay: Ignore invalid attribute target.
+
+2007-02-18  Marek Safar  <marek.safar@gmail.com>
+       * cs-tokenizer.cs: Ignore '\0' as white space character.
+
+2007-02-17  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-parser.jay: Add support for lambda expressions to the mcs
+       compiler as well.
+
+       * lambda.cs: Only clone when we are probing, not on the final call
+       (Compatible is the final call). 
+
+       * statement.cs (CloneContext): Introduce class to provide block
+       remapping during clone.
+
+       All statements Clone themselves now.
+
+       (Clone): special handling for blocks, when we clone a block, we
+       register the block inside this routine, as children of the block
+       might trigger a lookup. 
+       
+       * expression.cs: Add support for CloneContext in all expressions. 
+       
+2007-02-17  Marek Safar  <marek.safar@gmail.com>
+       A fix for bug #80493
+       * statement.cs: Report ambiguous warning when interfaces are not related.
+
+2007-02-15  Marek Safar  <marek.safar@gmail.com>
+
+       C# 3.0 extension methods.
+
+       * attribute.cs (Error_MisusedExtensionAttribute): Extension attribute
+       cannot be used directly.
+
+       * class.cs (Class.Emit): Emit extension attribute if any class method
+       is extension method.
+       (Method.Define): Add basic extension method validation conditions.
+       (Method.Emit): Emit extension attribute for method.
+
+       * codegen.cs (AssemblyClass): Emit extension attribute if at least one
+       extension method exists. Currently we follow same approach as Microsoft
+       does, emit even if a method or a class are private but this can change
+       later.
+
+       * cs-parser.jay: Add handling of `this' keyword in method parameters
+       context.
+
+       * decl.cs (DeclSpace.IsStaticClass): New property.
+       (MemberCache.FindExtensionMethods): Looks for extension methods with
+       defined name and extension type.
+
+       * doc.cs: Updated after OverloadResolve changes.
+
+       * driver.cs: Add new soft reference to System.Core.dll.
+
+       * ecore.cs (MethodLookup): Can return only MethodGroupExpr.
+       (ExtensionMethodGroupExpr): Represents group of extension methods.
+
+       * expression.cs (Invocation): Moved methods BetterConversion, MoreSpecific,
+       BetterFunction, IsOverride, IsAncestralType, OverloadResolve
+       to MethodGroupExpr and made non-static for easier customization.
+       (Invocation.DoResolve): Add extension method lookup when no standard
+       method was found.
+       (MemberAccess.DoResolve): Try extension methods if no member exists.
+
+       * modifiers.cs: Add METHOD_EXTENSION modifier.
+
+       * namespace.cs (RegisterExtensionMethodClass): Register class namespace
+       as well as candidate extension type.
+       (ComputeNamespaces): When assembly constains extension methods registers
+       them.
+       (Namespace.RegisterExternalExtensionMethodClass): Register type for later
+       extension method lookup.
+       (Namespace.LookupExtensionMethod): Looks for extension method in this
+       namespace.
+       (NamespaceEntry.LookupExtensionMethod): Does extension methods lookup to
+       find a method which matches name and extensionType.
+
+       * parameter.cs (Parameter): Add This modifer.
+       (HasExtensionMethodModifier): New property.
+       (Resolve): Add extension parameter check.
+       (ModFlags): turned to property to exclude this modifier as it is not real
+       parameter modifier.
+       (Parameters): Implemented ExtensionMethodType and HasExtensionMethodType.
+
+       * support.cs (ParameterData): Add ExtensionMethodType.
+       (ReflectionParameters): Implemented ExtensionMethodType interface property.
+
+       * typemanager.cs: Add type and ctor extension attribute type.
+
+2007-02-15  Miguel de Icaza  <miguel@novell.com>
+
+       * report.cs (DisableErrors, EnableErrors): used to prevent error
+       output when we are "trying" to compile various methods with
+       different types. 
+
+       * ecore.cs (Expression): Add Clone method that calls the virtual
+       CloneTo method.  The current CloneTo method in Expression throws
+       an exception so we can track down all the places where this must
+       be implemented (not using abstract, because that would be a lot of
+       up-front-work before we can start testing the implementation
+       idea). 
+
+       Important: we only need Clone capabilities for expressions created
+       by the parser, as the expressions we will be cloning are
+       expressions in the pre-resolved state.   This vastly simplifies
+       the work required. 
+       
+       (SimpleName): Add CloneTo that does nothing.
+       (EmptyCast): Add CloneTo.
+       
+       * expression.cs (Binary): Implement CloneTo.
+       (Invocation.IsApplicable): Store the current ec in
+       EmitContext.TempEc and restore it on return.  This is used so we
+       do not have to sprinkle hundres of methods with an extra
+       EmitContext, we know that the only user is the lambda expression
+       ImplicitConversionExists code. 
+       
+       (Argument): Add Cloning capabilities.
+       (LocalVariableReference, ParenthesizedExpression, Unary, Probe,
+       Cast, Conditional, ArrayCreation, InvocationOrCast, Invocation,
+       ArglistAccess, ArgList, TypeOf, SizeOf, CheckedExpr,
+       UnCheckedExpr, ElementAccess, BaseAccess, BaseIndexerAccess,
+       IndexerAccess): Add Clone capability.
+
+       (LocalVariableReference, This): TODO: needs cloned Block mapping.
+
+       (Argument): Add cloning capability.
+
+       * assign.cs (Assign): Implement CloneTo.
+
+       * anonymous.cs (ImplicitStandardConversionExists): Make virtual.
+       
+       * lambda.cs (ImplicitStandardConversionExists): Implement lambda
+       version by calling Convert with the EmitContext (that we are
+       currently storing in ec, this is not great, but will do for now,
+       to avoid passing EmitContext parameters to hundreds of functions
+       that do not need them now).
+
+       (SetExpression): Remove, it is not needed.
+       
+       (ContextualReturn): Implement CloneTo.
+
+       * statement.cs (Statement): Implement cloning infrastructure,
+       similar to expressions.
+
+       (Block): Partial implementation of Clone for statements.
+
+       (Return): Implement clone.
+       
+       * constant.cs (Constant.CloneTo): New method, does nothing.
+
+       * codegen.cs (TempEc): Add a static EmitContext as a temporary
+       solution, until we decide how to exactly do this.  
+       
+2007-02-14  Marek Safar  <marek.safar@gmail.com>
+       A fix for bug #80493
+       * class.cs (FindOutBaseMethod): When the base accessor does not exist and
+       a property is override we need to use second accessor.
+
+2007-02-13  Marek Safar  <marek.safar@gmail.com>
+       A fix for bug #80418
+       * attribute.cs, class.cs: Use correct calling conventions for pinvoke
+       methods.
+
+2007-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       Another fix for bug #80749
+       * pending.cs: Abstract class has priority over interfaces.
+
+2007-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       Another fix for bug #80749
+       * pending.cs: Abstract class has priority over interfaces.
+
+2007-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       Another fix for bug #80749
+       * pending.cs: Abstract class has priority over interfaces.
+
+2007-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       Another fix for bug #80749
+       * pending.cs: Abstract class has priority over interfaces.
+
+2007-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs Better error message.
+
+       * driver.cs: Add shorter versions of -optimize option.
+
+2007-02-13  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (Constructor.Emit): Check the return value of
+       ec.ResolveTopBlock() and return on error.
+
+2007-02-13  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (Error_InvalidExpressionStatement): Add a comma to error
+       message to fix error message regression.
+
+2007-02-12  Marek Safar  <marek.safar@gmail.com>
+
+       * delegate.cs: Delegate creation expression cannot be of Nullable type.
+
 2007-02-12  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #80749