2008-03-27 Marek Safar <marek.safar@gmail.com>
[mono.git] / mcs / mcs / ChangeLog
index 51b4274371679a751e496a64bebb8901c69c28e1..a4fe0b9d06195ef395c61428bd2b26dc13296244 100644 (file)
@@ -1,7 +1,326 @@
+2008-03-27  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #374214
+       * ecore.cs: Correctly report argument type mismatch.
+
+2008-03-27  Marek Safar  <marek.safar@gmail.com>
+
+       * convert.cs (ImplicitReferenceConversionCore): Correctly compare enum type
+       and not rely on broken IsEnum.
+
+2008-03-27  Marek Safar  <marek.safar@gmail.com>
+
+       * nullable.cs: New file, extracted from generic.cs.
+       
+       * generic.cs, generic-mcs.cs, *.csproj, *.sources: Updated.
+
+2008-03-27  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, convert.cs, generic-mcs.cs, expression.cs: Added lifting of
+       predefined comparison operators and null literals.
+       
+       * report.cs: New warning ID.
+       
+2008-03-25  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #370577
+       * lambda.cs: Check return type too.
+
+2008-03-25  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #372846
+       * class.cs: Automatic properties can be declared as unsafe.
+
+2008-03-20  Marek Safar  <marek.safar@gmail.com>
+
+       * location.cs: Use string based concatenation.
+       
+       * expression.cs: LiftedBinaryOperator is gmcs only.
+       
+2008-03-20  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, literal.cs, ecore.cs, expression.cs: Ongoing work on nullable
+       conversions rules and expression trees.
+
+2008-03-19  Marek Safar  <marek.safar@gmail.com>
+
+       * delegate.cs: Use extension method source as delegate target.
+
+2008-03-19  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, generic-mcs.cs, expression.cs, ecore.cs: Rewrote nullable
+       binary operations to be purely based on binary operations and optimized
+       emitted code (30% less in some cases). Introduced ReducedExpression for ETs
+       and other ET refactoring.
+       
+       * typemanager.cs: Fixed warning.
+       
+2008-03-17  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs, decl.cs, delegate.cs: Do protected modifier check on each member
+       
+       * symbolwriter.cs: Fixed.
+
+2008-03-17  Marek Safar  <marek.safar@gmail.com>
+
+       * anonymous.cs, driver.cs: Reset anonymous types counters.
+
+2008-03-17  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs (MethodGroupExpr): Skip first candidate, it's already the best.
+       
+       * class.cs: Use fullname for all type member definitions.
+       
+2008-02-19  Martin Baulig  <martin@ximian.com>
+
+       * class.cs
+       (IMethodData.EmitExtraSymbolInfo): New interface method.
+       (MethodData.Emit): Call method.EmitExtraSymbolInfo().
+       (MethodOrOperator.EmitExtraSymbolInfo): Implement this new
+       interface method here as an empty public virtual method.
+
+       * anonymous.cs
+       (AnonymousMethodMethod.ctor): Added `string real_name' argument.
+       (AnonymousMethodMethod.EmitExtraSymbolInfo): Override and call
+       CodeGen.SymbolWriter.SetRealMethodName().       
+
+2008-02-18  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs
+       (ScopeInfo.EmitType): Override this and emit debugging
+       information for captured variables.
+       (RootScopeInfo.EmitType): Override this and emit symbol
+       information for a captured `this'.
+
+2008-02-15  Martin Baulig  <martin@ximian.com>
+
+       * iterators.cs: Emit debugging info.
+
+       * codegen.cs
+       (EmitContext.Flags): Add `OmitDebuggingInfo'.
+       (EmitContext.OmitDebuggingInfo): New public property.
+
+       * statement.cs
+       (While): Override Emit() and don't emit symbol info there; do it
+       inside DoEmit() instead.
+       (Block.Emit): Omit symbol information while emitting the scope
+       initializers; don't ec.Mark() the `EndLocation'.  Fix the lexical
+       block logic.
+       (ExplicitBlock.IsIterator): Moved here from `ToplevelBlock'.
+       (ToplevelBlock.MakeIterator): Pass the `flags' to `ExplicitBlock's
+       .ctor to make `IsIterator' work.
+
+2008-03-14  Martin Baulig  <martin@ximian.com>
+
+       * symbolwriter.cs: Added the new symbol writer function from the
+       debugger's `terrania' branch; temporarily enclose them inside
+       `#if !DISABLE_TERRANIA_CHANGES' conditionals until I'm back from
+       my vacations.
+
+2008-03-14  Martin Baulig  <martin@ximian.com>
+
+       * symbolwriter.cs
+       (SymbolWriter): Make this a public static class.
+
+       * codegen.cs
+       (CodeGen.SymbolWriter): Removed; use the new static `SymbolWriter'
+       class instead of using `if (CodeGen.SymbolWriter != null)' everywhere.
+
+2008-03-14  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #370577
+       * statement.cs, lambda.cs: Added extra limitations when dealing with void
+       return type.
+       
+2008-03-14  Marek Safar  <marek.safar@gmail.com>
+
+       * typemanager.cs (CSharpName): Made 250 times faster.
+
+2008-03-13  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs, expression.cs: Emit conversion for ET shift argument.
+       
+2008-03-12  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, typemanager.cs, enum.cs, codegen.cs, statement.cs: Try not to
+       crash when predefined field does not exist.
+       
+2008-03-12  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs (PropertyExpr): Fixed IsSingleDimensionalArrayLength regression.
+       
+2008-03-12  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs (FixedField): Don't crash when contructors are missing.
+
+2008-03-11  Marek Safar  <marek.safar@gmail.com>
+
+       * typemanager.cs, namespace.cs, literal.cs, ecore.cs, class.cs, decl.cs,
+       convert.cs, constant.cs, expression.cs, statement.cs: Use same method to
+       check internal types accessibility for internal and external types.
+       Replaced EnumToUnderlying by GetEnumUnderlyingType.
+
+2008-03-11  Marek Safar  <marek.safar@gmail.com>
+
+       * support.cs, typemanager.cs, pending.cs, ecore.cs, class.cs, delegate.cs
+       convert.cs, const.cs, anonymous.cs, constant.cs, expression.cs,
+       attribute.cs, statement: Use corect instance of predefined types (work
+       related to #364674).
+
+2008-03-07  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs (TypeOfVoid): Fixed predefined method initialization.
+       
+2008-03-07  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, typemanager.cs, parameter.cs, rootcontext.cs, ecore.cs, 
+       class.cs, delegate.cs, iterators.cs, const.cs, constant.cs, driver.cs,
+       expression.cs, attribute.cs, codegen.cs, statement.cs: TypeManager optional
+       predefined types clean up, delayed predefined types members initialization
+       (work related to #364674).
+
+2008-03-05  Marek Safar  <marek.safar@gmail.com>
+
+       * typemanager.cs (IsFriendAssembly): InternalsVisibleTo is not mandatory.
+       
+2008-03-05  Marek Safar  <marek.safar@gmail.com>
+
+       * typemanager.cs, parameter.cs, rootcontext.cs, ecore.cs, class.cs, decl.cs,
+       delegate.cs, convert.cs, driver.cs, attribute.cs, codegen.cs: TypeManager
+       predefined types clean up (work related to #364674).
+
+2008-03-04  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs: Print an error message instead of throwing exception.
+       
+2008-03-04  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, typemanager.cs, literal.cs, convert.cs, cfold.cs, constant.cs,
+       expression.cs, statement.cs: Unififed null literal representation.
+
+2008-03-03  Marek Safar  <marek.safar@gmail.com>
+
+       * anonymous.cs, cfold.cs, convert.cs, delegate.cs, doc.cs, ecore.cs,
+       expression.cs: Refactored binary operators resolve phase and improved speed.
+       The nullable code is still missing and won't work correctly, more fixes
+       required.
+
+       It also fixes #323726, #324312, #324248, and many other unreported issues.
+
+2008-02-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * report.cs (FeatureIsNotAvailable): Use 'mcs1' instead of 'mcs', and 'mcs' 
+       instead of 'gmcs'.
+
+2008-02-27  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs: Clean-up and split BetterConversion.
+       
+2008-02-25  Raja R Harinath  <harinath@hurrynot.org>
+
+       Fix #363791
+       * enum.cs (EnumMember.Value): Only access 'value' if
+       ResolveValue says it's ok.
+       (EnumMember.DoResolveValue): Don't set prev_member.value.
+       (Enum.GetDefinition): Reverse arguments of Equals --
+       EnumMember.Value can return 'null'.
+
+       * statement.cs (Switch.Error_AlreadyOccurs): Fix typo in name.
+
+2008-02-22  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, expression.cs: More ongoing work on expression trees.
+       
+2008-02-21  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs, typemanager.cs: Rewrote operator matching logic to correctly
+       handle missing matches when mutiple operators exist.
+       
+2008-02-20  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #363218
+       * expression.cs (ArrayCreation.Clone): Deal with multi-dimensional
+       initializers.
+       
+2008-02-20  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs, constant.cs, cfold.cs: Yet another side-effect constant
+       update. This time to deal correctly with SideEffectConstant expression used
+       as an argument for another constant folding.
+
+2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
+
+       * typemanager.cs (DropGenericMethodArguments): Ensure we get an underlying
+       MethodBuilder.
+
+2008-02-19  Marek Safar  <marek.safar@gmail.com>
+
+       * constant.cs, cfold.cs: SideEffectConstant results can apply for folding.
+
+2008-02-19  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #328136
+       * expression.cs: Do not fold immediately LogicalAnd operators when the left
+       side is a false constant, because we still need to evaluate the right-hand
+       side.
+
+       * statement.cs (If): Emit two types of boolean constants (simple constant,
+       side-effect constant).
+
+2008-02-19  Marek Safar  <marek.safar@gmail.com>
+
+       * constant.cs (SideEffectConstant): Don't emit boolean constant.
+
+       * expression.cs: Fold immediately LogicalAnd operators when both sides are
+       constants.
+
+2008-02-18  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #361457
+       * ecore.cs (IsApplicable): Params methods have lower priority.
+
+       * support.cs: Return correct parameter modifier for params types.
+
+2008-02-18  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs (TypeParameter): Cache attribute target name.
+
+       * support.cs: Removed unused variable.
+
+       * typemanager.cs: Removed debugging leftover.
+
+       * ecore.cs: Use local type instead of a property;
+
+       * class.cs (VerifyMembers): Consider also parent to test whether type member
+       is local or public.
+
+       * expression.cs (FullMethodDesc): Removed.
+
+       * attribute.cs (IsValidArgumentType): Made static.
+
+2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
+
+       Cleanup to be more readable.
+       * Makefile (GMCS_PROFILE): Remove.
+       (COMPILER_NAME): New helper.
+
+2008-02-15  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-tokenizer.cs: if a conditional expression happens inside a
+       (...) this also means that we do not need to de-ambiguate between
+       an parenthesized expression and a cast.
+
+       Fixes 346484.
+
+       * constant.cs (SideEffectConstant): a constant value that happens
+       to have a side effect.
+
+       Fixes the build regressions introduced by the fix for #359789
+
 2008-02-14  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * expression.cs (Conditional.Emit): when emitting the ternary
-       operator, use local variables to generate code verifiable code. 
+       operator, use local variables to generate code verifiable code.
 
        The verifier cannot infer that the type on stack before the
        stloc.0 is executed is of type ParentB. This happens because the
        the expected type.
 
        Fixes: #358102
-       
+
 2008-02-14  Miguel de Icaza  <miguel@novell.com>
 
        * expression.cs: Do not fold BitwiseAnd operators when the left
 
 2008-02-14  Marek Safar  <marek.safar@gmail.com>
 
-       * generic.cs (TypeParameter.GetMembers): Is not supported operation. 
-       
+       * generic.cs (TypeParameter.GetMembers): Is not supported operation.
+
 2008-02-14  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #361686
-       * decl.cs: A protected types used inside a private class which parents 
-       derives from the protected class are accessible.
+       * decl.cs: A protected types used inside a private class which parents
+       derives from the protected class are accessible.
 
 2008-02-13  Marek Safar  <marek.safar@gmail.com>
 
 2008-02-12  Marek Safar  <marek.safar@gmail.com>
 
        * Makefile: Fixed `qh' target to work on all machines.
-       
-       * report.cs, typemanager.cs, parameter.cs, ecore.cs, class.cs, anonymous.cs,
-       expression.cs, codegen.cs, statement.cs, doc.cs: Replaced type IsSubclassOf
-       and HasElementType with TypeManager implementation.
+
+       * report.cs, typemanager.cs, parameter.cs, ecore.cs, class.cs, anonymous.cs,
+       expression.cs, codegen.cs, statement.cs, doc.cs: Replaced type IsSubclassOf
+       and HasElementType with TypeManager implementation.
 
 2008-02-08  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bugs #325134, #359749
-       * expression.cs, ecore.cs: Try to resolve an extension method even if the
-       first binds point to non-method member expression.
-       
+       * expression.cs, ecore.cs: Try to resolve an extension method even if the
+       first binds point to non-method member expression.
+
 2008-02-08  Marek Safar  <marek.safar@gmail.com>
 
        * cs-parser.jay: Null coalescing operator is not part of ISO-1.
 2008-02-08  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bugs #321394, #323028
-       * generic.cs, parameter.cs, ecore.cs, class.cs, decl.cs, delegate.cs: 
-       Reworked naive IsAccessibleAs implementation to handle nested types.
+       * generic.cs, parameter.cs, ecore.cs, class.cs, decl.cs, delegate.cs:
+       Reworked naive IsAccessibleAs implementation to handle nested types.
 
 2008-02-05  Jb Evain  <jbevain@novell.com>
 
 2008-02-05  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #325372
-       * class.cs: Use generic type comparison when testing method signatures.
+       * class.cs: Use generic type comparison when testing method signatures.
 
 2008-02-05  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #357047
-       * ecore.cs: Applied C# 3.0 changes to better conversion.
+       * ecore.cs: Applied C# 3.0 changes to better conversion.
 
 2008-02-05  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #358374
-       * cs-parser.jay: Correctly set modifiers for all constructor types.
+       * cs-parser.jay: Correctly set modifiers for all constructor types.
 
 2008-02-04  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #355251
-       * generic.cs: Added base class constraint based type inference.
+       * generic.cs: Added base class constraint based type inference.
 
 2008-02-01  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #357255
-       * decl.cs: One more missing visibility check.
+       * decl.cs: One more missing visibility check.
 
 2008-02-01  Marek Safar  <marek.safar@gmail.com>
 
 2008-01-25  Marek Safar  <marek.safar@gmail.com>
 
        * report.cs: Correctly reset warnings count after probing.
-       
+
 2008-01-25  Martin Baulig  <martin@ximian.com>
 
        * namespace.cs
 
        * expression.cs: Implemented Divide, Equal, ExclusiveOr, GreaterThanOrEqual
        expressions.
-       
+
 2008-01-25  Marek Safar  <marek.safar@gmail.com>
 
-       * generic.cs: Use full implicit conversion for type inference fixing.
-       
+       * generic.cs: Use full implicit conversion for type inference fixing.
+
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
-       * ecore.cs, expression.cs, generic.cs: Implemented Convert, ConvertChecked.
-       Fixed user operator conversions.
-       
+       * ecore.cs, expression.cs, generic.cs: Implemented Convert, ConvertChecked.
+       Fixed user operator conversions.
+
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
-       * generic.cs: Do nullable type to null comparison optimization during
-       resolve phase.
-       
+       * generic.cs: Do nullable type to null comparison optimization during
+       resolve phase.
+
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #355163
-       * generic.cs: Enabled l-value resolve on nullable expressions.
-       
+       * generic.cs: Enabled l-value resolve on nullable expressions.
+
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #353986
-       * class.cs: Ingore static ctors with parameters for any further checks.
-       
+       * class.cs: Ingore static ctors with parameters for any further checks.
+
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #354310
-       * namespace.cs: Removed redundant check.
+       * namespace.cs: Removed redundant check.
 
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #354928
-       * expression.cs: ElementInitializers can be resolved only once.
-       
+       * expression.cs: ElementInitializers can be resolved only once.
+
 2008-01-24  Marek Safar  <marek.safar@gmail.com>
 
        * convert.cs, ecore.cs, expression.cs, generic.cs: Implemented Coalesce and
        Condition expressions.
-       
+
 2008-01-23  Marek Safar  <marek.safar@gmail.com>
 
        * codegen.cs: Fixed AssemblyBuilder initialization on other platforms.
 
        * ecore.cs, expression.cs, generic.cs: Implicit bool? to bool conversion is
        not allowed.
-       
+
        * generic.cs: Implemented coalesce expression.
 
 2008-01-22  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #355145
-       * anonymous.cs, convert.cs, ecore.cs, generic.cs, lambda.cs: Implemented
-       expression tree type inference.
+       * anonymous.cs, convert.cs, ecore.cs, generic.cs, lambda.cs: Implemented
+       expression tree type inference.
 
 2008-01-22  Raja R Harinath  <harinath@hurrynot.org>
 
        Fix #354663
        * expression.cs (Binary.IsUnsignedType): Fix typo.
-       
+
 2008-01-22  Marek Safar  <marek.safar@gmail.com>
 
-       * ecore.cs, expression.cs, generic.cs: Implemented NewArrayInit expression.
-       
+       * ecore.cs, expression.cs, generic.cs: Implemented NewArrayInit expression.
+
 2008-01-22  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #355161
-       * ecore.cs, expression.cs: Wider range of extension method supported
-       expressions.
+       * ecore.cs, expression.cs: Wider range of extension method supported
+       expressions.
+
 2008-01-22  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * codegen.cs: Use magic value for AssemblyBuilderAccess to instruct
 2008-01-22  Marek Safar  <marek.safar@gmail.com>
 
        A fix for bug #355148
-       * ecore.cs, expression.cs: Correctly report misused ref and out modifiers.
-       
+       * ecore.cs, expression.cs: Correctly report misused ref and out modifiers.
+
 2008-01-22  Miguel de Icaza  <miguel@novell.com>
 
        * expression.cs (CreateExpressionTree): Add support for or and