2008-06-27 Marek Safar <marek.safar@gmail.com>
[mono.git] / mcs / mcs / ChangeLog
index 86c50316979f9672ca9b2ff23af13f2ef8f1b9ba..da7201bed1f5a9f813e84d2d9b06195817aab3e3 100644 (file)
@@ -1,3 +1,568 @@
+2008-06-27  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #401020
+       * ecore.cs: Both types and modifiers have to match for ref and out arguments
+
+2008-06-27  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #398319
+       * cs-parser.jay: Implemented undocumented base access expression inside
+       anonymous types.
+
+2008-06-26  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #404227
+       * cs-parser.jay: Parse namespace declaration using qualified identifier.
+
+2008-06-26  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #404227
+       * convert.cs: Fixed explicit array to interface cast.
+
+2008-06-26  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #403894
+       * delegate.cs: Mutate DelegateInvocation type.
+
+2008-06-26  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #379348
+       * delegate.cs: Box a load of generic parameters.
+
+2008-06-26  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs: Add an array creation arguments mutate.
+
+2008-06-26  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #386068
+       * anonymous.cs, expression.cs: Emit correctly hoisted expression tree
+       parameter.
+
+2008-06-25  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs, expression.cs: Fixed broken TypeCast clone, implemented few more
+       CloneTo.
+
+2008-06-25  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #403518
+       * delegate.cs: Type correctly anonymous method new invocation.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #394826
+       * anonymous.cs: Fully qualify members when resolving anonymous type internal
+       calls.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #394826
+       * anonymous.cs, iterators.cs: Construct generic storey only when is really
+       needed.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs: Clone indexer parameters for localized capturing.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #402379
+       * expression.cs: Don't crash when an object initializer resolve fails.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #402888
+       * expression.cs: Mutate conditional expression.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #401012
+       * class.cs: Keep StructLayout in shared container.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #400438
+       * decl.cs, class.cs: Only properties can be automatically implemented.
+
+2008-06-24  Marek Safar  <marek.safar@gmail.com>
+
+       * statement.cs (ChangeToIterator): Copy also labels.
+
+2008-06-23  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs: Pass type argument details to parent extension method.
+
+2008-06-23  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #375966
+       * delegate.cs: Fixed IsTypeCovariant generic type conversions.
+
+2008-06-23  Raja R Harinath  <harinath@hurrynot.org>
+
+       * Makefile (bootstrap-libs): Pass NO_DIR_CHECK to sub-make.
+
+2008-06-22  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #394347
+       * anonymous.cs: Cache compatible delegates as compatibility check produces
+       a new method every time.
+
+2008-06-20  Marek Safar  <marek.safar@gmail.com>
+
+       * anonymous.cs: Propagate storey reference for single references.
+
+2008-06-20  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #387615
+       * assign.cs, expression.cs: Correctly clone compound assignment.
+
+2008-06-19  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #359611, #359604
+       * anonymous.cs: Mutate all types of hoisted parameters.
+
+2008-06-19  Marek Safar  <marek.safar@gmail.com>
+
+       * typemanager.cs, lambda.cs, parameter.cs, ecore.cs, linq.cs, class.cs
+       delegate.cs, iterators.cs, cs-parser.jay, assign.cs, anonymous.cs, driver.cs
+       expression.cs, codegen.cs, statement.cs
+       
+       Fixes bugs: #318652, #323223, #234779, #325069, #325476, #332532, #334465,
+       #345907, #349190, #353276, #355256, #359617, #378542, #384584, #396530
+       
+       ** Anonymous methods, lambda expressions rewrite **
+       
+       Anonymous expressions are now resolved when an explicit block is resolved 
+       and they don't require any registration procedure anymore. Further,
+       anonymous methods are defined when explicit block is emitted which allows
+       better control of whole process and opens possibilities for more
+       optimizations as well as alternative to reverse whole process.
+       
+       A concept of `MutateHoistedGenericType' was introduced to keep the resolve
+       process consistent and to correctly emit hoisted generic methods when they
+       have at least 1 hoisted variable.
+       
+2008-06-17  Martin Baulig  <martin@ximian.com>
+
+       * class.cs: Also emit the `[DebuggerHidden]' attribute on the main
+       iterator method.
+       (AbstractPropertyEventMethod.IsDebuggerHidden): New protected
+       virtual property; check it in Emit().
+       (PropertyMethod.IsDebuggerHidden): Override, check whether we're
+       an iterator.
+       (MethodOrOperator.ResolveMethods): Set `DEBUGGER_HIDDEN' if we're
+       an iterator.
+       (Indexer.Define): Likewise.
+
+2008-06-17  Marek Safar  <marek.safar@gmail.com>
+
+       * convert.cs: Don't use IsInterface on type arguments.
+       
+       * delegate.cs: DelegateInvocation uses MethodInfo.
+       
+       * parameter.cs: Removed IsTypeParameter.
+       
+       * generic-mcs.cs: More missing stuff.
+
+2008-06-16  Martin Baulig  <martin@ximian.com>
+
+       * modifiers.cs
+       (Modifiers.DEBUGGER_HIDDEN): New public const.
+
+       * typemanager.cs
+       (TypeManager.GetDebuggerHiddenAttribute): New public static method.
+
+       * class.cs
+       (MethodOrOperator.Emit): Check `Modifiers.DEBUGGER_HIDDEN'.
+       (AbstractPropertyEventMethod): Likewise.
+       (Constructor.Emit): Likewise.
+       (SourceMethod.SetCompilerGenerated): Removed.
+
+       * iterator.cs: Set `Modifiers.DEBUGGER_HIDDEN' everywhere except
+       on MoveNext().
+
+       * anonymous.cs
+       (RootScopeInfo.DoDefineMembers): Set `Modifiers.DEBUGGER_HIDDEN'
+       if we're an `IteratorHost'.
+       (AnonymousMethodMethod..ctor): Don't set
+       `Modifiers.COMPILER_GENERATED'; csc only sets this on the class,
+       not on the method.
+
+2008-06-16  Marek Safar  <marek.safar@gmail.com>
+
+       * statement.cs: Clean-up foreach statements.
+
+2008-06-12  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs: Stop using public method which should not exist.
+
+2008-06-11  Martin Baulig  <martin@ximian.com>
+
+       * location.cs
+       (Location.LookupFile): Add `CompilationUnit' argument; when given
+       a relative file name, make it relative to the directory the .cs
+       file is located in instead of using the current directory.
+
+2008-06-11  Martin Baulig  <martin@ximian.com>
+
+       * class.cs
+       (IMethodData.EmitExtraSymbolInfo): Added `SourceMethod' argument.
+       (MethodOrOperator.EmitExtraSymbolInfo): Likewise.
+       (SourceMethod.SetRealMethodName): Moved here from the symbol writer.
+       (SourceMethod.SetCompilerGenerated): Likewise.
+
+2008-06-11  Marek Safar  <marek.safar@gmail.com>
+
+       * codegen.cs, driver: Only write symbol file when it's asked for.
+
+2008-06-11  Marek Safar  <marek.safar@gmail.com>
+
+       * codegen.cs: Don't use assembly writer error handling for symbol writer.
+
+2008-06-10  Martin Baulig  <martin@ximian.com>
+
+       * symbolwriter.cs: Reflect latest MarkSequencePoint() API changes.
+
+2008-06-09  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #316290
+       * expression.cs: Include decimal operators in predefined table.
+       
+       * parameters.cs: More readonlyness.
+
+2008-06-09  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #397213
+       * cs-parser.jay: One more missing current_local_parameters reset.
+
+2008-06-09  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #396633
+       * class.cs: Host backing field in partial container.
+
+2008-06-09  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #397068
+       * expression.cs: Check both operand types when predefined operator is used.
+
+2008-06-05  Martin Baulig  <martin@ximian.com>
+
+       Merged the `debugger-kahalo' branch.
+
+       * class.cs
+       (MethodData.Emit): Call SymbolWriter.SetCompilerGenerated() if
+       we're an iterator method.
+       (SourceMethod): Reflect latest symbol writer changes;
+       SymbolWriter.OpenMethod() now takes a `ICompileUnit' argument and
+       now `start_row' and `end_row'.
+       (Constructor.Emit): Fix the logic whether to emit symbol information.
+
+       * iterator.cs: Call SymbolWriter.SetCompilerGenerated() on all the
+       generated methods.
+
+       * location.cs
+       (CompilationUnit): New public class; derives from `SourceFile'.
+       (SourceFileEntry.DefineSymbolInfo): New public method.
+       (SourceFileEntry.SetChecksum): New public method.
+       (Location): Encode hidden line numbers by using `column == 255';
+       the .ctor now accepts `column == -1' to mark a hidden line number.
+       (Location.Hidden): New public property.
+       (Location.CheckPoint): Add `CompilationUnit'.
+       (Location.SourceFiles): Change return type to `CompilationUnit[]'.
+       (Location.Push): Add `CompilationUnit compile_unit' argument.
+       (Location.CompilationUnit): New public property.
+
+       * statement.cs
+       (ToplevelBlock.Emit): Add `ec.Mark (EndLocation)'.
+
+       * cs-parser.jay: `SourceFile' -> `CompilationUnit'.
+
+       * driver.cs: `SourceFile' -> `CompilationUnit'.
+
+       * cs-tokenizer.cs: `SourceFile' -> `CompilationUnit'.
+
+       * namespace.cs: `SourceFile' -> `CompilationUnit'.
+
+       * cs-tokenizer.cs: Add support for `#pragma checksum' and
+       `#line hidden'.
+
+       * symbolwriter.cs
+       (SymbolWriter.MarkSequencePoint): Take a `Location' and use the
+       new symbol writer API to also pass the file.
+
+2008-06-05  Marek Safar  <marek.safar@gmail.com>
+
+       * statement.cs: Emit catch variable assignment using variable expression.
+       
+2008-06-05  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs, expression.cs, statement.cs: Make TemporaryVariable compatible
+       with other variable types.
+
+2008-06-04  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs, expression.cs, statement.cs, typemanager.cs: Removed custom
+       GetLength method emit, it breaks resolve rules.
+       
+2008-06-02  Atsushi Enomoto  <atsushi@ximian.com>
+            Marek Safar  <marek.safar@gmail.com>
+                       
+       A fix for bug #395542
+       * cs-parser.jay: The trailing comma is allowed in anonymous type member
+       declaration.
+       
+2008-06-02  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #395287
+       * class.cs, modifiers.cs: Automatic properties method base modifiers checks.
+
+2008-05-31  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #395845
+       * class.cs, nullable.cs: User unary operator is allowed to have nullable and
+       non-nullable parameter type.
+       
+2008-05-31  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs: Handle contructor initializer as a statement in top-level block.
+
+2008-05-30  Marek Safar  <marek.safar@gmail.com>
+
+       * attribute.cs: Don't mix old and new corlib types when emitting corlib
+       security attributes.
+
+2008-05-24  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs, expression.cs: Small IVariable refactoring.
+
+2008-05-22  Marek Safar  <marek.safar@gmail.com>
+
+       * assign.cs (LocalTemporary): Implemented CreateExpressionTree.
+
+2008-05-21  Marek Safar  <marek.safar@gmail.com>
+
+       * cs-parser.jay: Removed redundant catch type check.
+
+2008-05-21  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #390372
+       * nullable.cs: Set correct return type.
+
+2008-05-21  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #391062
+       * typemanager.cs: Fixed crash when comparing null types.
+
+2008-05-21  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #391871
+       * cs-parser.jay: Better error handling for invalid catch type.
+
+2008-05-20  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #392155
+       * cs-tokenizer.cs: Fixed casting of byte and decimal expression.
+
+2008-05-15  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #390666
+       * ecore.cs (BetterExpressionConversion): Unwrap each Expression<T>
+       expressions.
+
+2008-05-15  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs, expression.cs, statement.cs: Removed a hack, setting block flag
+       in getter.
+
+2008-05-13  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #389625
+       * delegate.cs, generic.cs: Some progress on method group return type
+       inference.
+
+2008-05-13  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #378419
+       * namespace.cs: Inspect also parent namespaces not only namespace entries.
+
+2008-05-12  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs (Constructor): Added IsCompilerGenerated.
+
+2008-05-12  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs: Enum binary operators can accept non-enum operand only when
+       is implicitly convertible to underlying type.
+
+2008-05-12  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #389272
+       * support.cs: Workaround System.InvalidOperationException for enums.
+
+2008-05-12  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #389073
+       * convert.cs: More undocumented explicit IntPtr/UIntPtr conversions.
+
+2008-05-10  Marek Safar  <marek.safar@gmail.com>
+
+       * driver.cs: Split Parse.
+       
+       * location.cs (LookupFile): Uses string.Empty.
+
+2008-05-07  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs, parameter.cs: Small ParameterReference clean up.
+
+2008-05-07  Marek Safar  <marek.safar@gmail.com>
+
+       * anonymous.cs, codegen.cs, convert.cs, ecore.cs: Removed uber ugly TempEc
+       hack. Fixes #387502.
+
+2008-05-06  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (Constructor.Emit): Fix the logic whether to emit
+       symbol information.
+
+2008-05-06  Raja R Harinath  <harinath@hurrynot.org>
+
+       Fix #385503
+       * iterators.cs (Iterator.CurrentBlock.DoEmit): Don't emit
+       InvalidOperationException when the iterator is before the start or
+       after the end.
+
+2008-05-06  Marek Safar  <marek.safar@gmail.com>
+
+       * nullable.cs (NullCoalescingOperator): Result is underlying type of left,
+       when left is nullable type.
+
+2008-05-06  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #386628
+       * expression.cs (LocalVariableReference): Continue in resolving when
+       variable is not assigned.
+
+2008-05-05  Marek Safar  <marek.safar@gmail.com>
+
+       * nullable.cs, statement.cs (Unwrap): Store non-variable expression in all
+       nullable operations.
+
+2008-05-04  Marek Safar  <marek.safar@gmail.com>
+
+       * nullable.cs, statement.cs (Unwrap): Don't duplicate variable expressions,
+       it saves many redundant temporary variables for nullable operations.
+
+2008-05-03  Marek Safar  <marek.safar@gmail.com>
+
+       * assign.cs: EventAddOrRemove is a statement and cannot have a type.
+       
+       * cfold.cs, constant.cs, expression.cs: Share Error_OperatorCannotBeApplied
+       method.
+       
+       * nullable.cs: Constant coalescing operator optimizations.
+
+2008-05-03  Marek Safar  <marek.safar@gmail.com>
+
+       * constant.cs: Use unsigned conversion for values which are unsigned only.
+
+2008-05-03  Marek Safar  <marek.safar@gmail.com>
+
+       * convert.cs, literal.cs, nullabel.cs, typemanager.cs: Implemeted null 
+       coalescing operator as it should be.
+
+2008-05-02  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #371016
+       * expression.cs: All predefined delegate operators require implicit method
+       group conversion.
+       
+2008-05-02  Marek Safar  <marek.safar@gmail.com>
+
+       * constant.cs: Emit long constant as uint when fits the range.
+       
+       * convert.cs, expression.cs: Fixed few unsafe conversions.
+
+2008-05-02  Marek Safar  <marek.safar@gmail.com>
+
+       * convert.cs, literal.cs: Don't wrap implicit reference conversion to object
+
+2008-05-02  Raja R Harinath  <harinath@hurrynot.org>
+
+       Fix #385758
+       * convert.cs (ImplicitNumericConversion): Don't modify the type of
+       'expr'.
+       * ecore.cs (EmptyCast.Create): Flatten nested EmptyCasts.
+
+2008-05-01  Marek Safar  <marek.safar@gmail.com>
+
+       * constant.cs, literal.cs: IsLiteral property for error reporting.
+       
+       * ecore.cs, expression.cs: Implemented Property expression.
+
+2008-05-01  Marek Safar  <marek.safar@gmail.com>
+
+       * class.cs, modifiers.cs, flowanalysis.cs: New BACKING_FIELD flag.
+       
+       * nullable.cs: Implemented nullable coalescing null operator.
+
+       * ecore.cs, expression.cs: Expression trees work.
+
+2008-05-01  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs: CreateExpressionTree is finally abstract.
+
+       * expression.cs, linq.cs: Updated.
+
+2008-05-01  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs, ecore.cs: Block base access expression inside expression
+       tree.
+
+2008-05-01  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #385058
+       * expression.cs: User-defined operator implementations always take
+       precedence over predefined operator implementations.
+
+2008-04-30  Marek Safar  <marek.safar@gmail.com>
+
+       * assign.cs, anonymous.cs, lambda.cs, nullable.cs, ecore.cs, linq.cs,
+       class.cs, iterators.cs, expression.cs, attribute.cs: Filled a few more
+       expression tree conversions.
+       
+2008-04-30  Marek Safar  <marek.safar@gmail.com>
+
+       * typemanager.cs, ecore.cs, class.cs, expression.cs, doc.cs: Merged all
+       operators method details to Operator class.
+
+2008-04-30  Marek Safar  <marek.safar@gmail.com>
+
+       * anonymous.cs: Pass unsafe flags to anonymous container.
+       
+       * ecore.cs, expression.cs, statement.cs: Block unsafe pointer operations
+       inside expression tree.
+
+2008-04-29  Martin Baulig  <martin@ximian.com>
+
+       * cs-tokenizer.cs (Tokenizer.Position): Added `line'.
+       (Tokenizer.PopPosition): Also restore the `line'.
+
+2008-04-29  Marek Safar  <marek.safar@gmail.com>
+
+       * delegate.cs: Implemented Invoke expression.
+
+2008-04-29  Marek Safar  <marek.safar@gmail.com>
+
+       * expression.cs: Fixed equality reference comparison regression.
+
+2008-04-29  Marek Safar  <marek.safar@gmail.com>
+
+       * ecore.cs: Clean up EmptyCast hack.
+       
+       * expression.cs, nullable.cs: Implemented enum binary and unary operations
+       using correct conversion rules. Also fixes #383993.
+
 2008-04-28  Martin Baulig  <martin@ximian.com>
 
        * class.cs (Constructor.Emit): Don't emit debugging information