2008-03-27 Marek Safar <marek.safar@gmail.com>
[mono.git] / mcs / mcs / ChangeLog
index f78ea97ef0613fcf64b23fbc53f2d6aba8e3b657..a4fe0b9d06195ef395c61428bd2b26dc13296244 100644 (file)
@@ -1,3 +1,524 @@
+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.
+
+       The verifier cannot infer that the type on stack before the
+       stloc.0 is executed is of type ParentB. This happens because the
+       stack merge algorithm uses only parent types when deciding which
+       is the common type.  This is described in Part III 1.8.1.3 of ECMA
+       335.
+
+       This code compiled with mcs is not verifiable under MS. The MS
+       verifier picks the first common interface of Foo and Bar, which is
+       wrong, but doesn't use a full join type of the 2 interfaces.
+
+       CSC uses a clever hack to compile such code in a verifiable
+       way. It stores the intermediate values in a local variable with
+       the expected type.
+
+       Fixes: #358102
+
+2008-02-14  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs: Do not fold BitwiseAnd operators when the left
+       side is a false constant, because we still need to evaluate the
+       right-hand side.
+
+       Fixes #359789
+
+       * support.cs: Instead of throwing an InternalErrorException when
+       the position of the stream is outside the boundary of our buffer,
+       reset the state of the reader, and restart the reading from the
+       beginning of the file.
+
+2008-02-14  Marek Safar  <marek.safar@gmail.com>
+
+       * 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.
+
+2008-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs (ConstraintChecker): Use cached member lookup when looking for
+       the parameterless constructor.
+
+2008-02-13  Marek Safar  <marek.safar@gmail.com>
+
+       * generic.cs, typemanager.cs, iterators.cs, codegen.cs: Refactored core
+       lookup methods to use standard member cache when doing member lookup.
+
+2008-02-12  Marek Safar  <marek.safar@gmail.com>
+
+       * driver.cs: Don't report full path for referenced module as assembly error.
+
+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.
+
+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.
+
+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.
+
+2008-02-05  Jb Evain  <jbevain@novell.com>
+
+       * class.cs: use generic type comparison for parameters
+       as well.
+
+2008-02-05  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #325372
+       * 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.
+
+2008-02-05  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #358374
+       * 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.
+
+2008-02-01  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #357255
+       * decl.cs: One more missing visibility check.
+
+2008-02-01  Marek Safar  <marek.safar@gmail.com>
+
+       * support.cs: Fixed broken return.
+
+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
+       (NamespaceEntry.SymbolFileID): Make this work again after
+       MemberName.ToString() is gone.
+
+2008-01-25  Marek Safar  <marek.safar@gmail.com>
+
+       * 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.
+
+2008-01-24  Marek Safar  <marek.safar@gmail.com>
+
+       * 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.
+
+2008-01-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #355163
+       * 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.
+
+2008-01-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #354310
+       * 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.
+
+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.
+
+2008-01-22  Marek Safar  <marek.safar@gmail.com>
+
+       * 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.
+
+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.
+
+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.
+
 2008-01-22  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * codegen.cs: Use magic value for AssemblyBuilderAccess to instruct
@@ -7,8 +528,8 @@
 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