2008-04-19 Jb Evain <jbevain@novell.com>
[mono.git] / mcs / class / System.Core / System.Linq.Expressions / ChangeLog
index d93603edb89047fc726abd073a8a431a9003cf06..ca61a4a94b7e582b631effe3927741ebcb88ad0e 100644 (file)
@@ -1,3 +1,180 @@
+2008-04-19  Jb Evain  <jbevain@novell.com>
+
+       * EmitContext.cs: infrastructure work to attach a compiled
+       lambda expression to an execution scope, and to detect and store
+       external globals in the scope.
+       * ConstantExpression.cs: load globals from the scope.
+
+2008-04-19  Jb Evain  <jbevain@novell.com>
+
+       * ExpressionVisitor.cs (Visit): don't die because of Power.
+
+2008-04-09  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs: check for illegal booleab unary expressions.
+
+2008-04-09  Jb Evain  <jbevain@novell.com>
+
+       * UnaryExpression.cs: implement compilation of negate.
+
+2008-04-09  Jb Evain  <jbevain@novell.com>
+
+       * UnaryExpression.cs, Expression.cs: implement IsLifted and IsLifted
+       to null for simple unary operators. Implement Not compilation.
+
+2008-04-08  Jb Evain  <jbevain@novell.com>
+
+       * ElementInit.cs: emit pop if the add method doesn't return void.
+
+2008-03-20  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs: use the new and more complete IsAssignableTo
+       instead of IsAssignableFrom.
+
+2008-03-19  Jb Evain  <jbevain@novell.com>
+
+       * LambdaExpression.cs: use the new standardified IsAssignableTo,
+       fixes ExpressionTest_NewArrayBounds.TestArrayAssignability.
+
+2008-03-19  Jb Evain  <jbevain@novell.com>
+
+       * Extensions.cs (Type.IsAssignableTo): deal with arrays.
+
+2008-03-13  Jb Evain  <jbevain@novell.com>
+
+       * NewArrayExpression.cs (EmitNewArrayBounds): implement.
+
+2008-03-12  Jb Evain  <jbevain@novell.com>
+
+       * NewArrayExpression.cs (Emit): naive implementation of emit support
+       for array initialization.
+
+2008-03-11  Jb Evain  <jbevain@novell.com>
+
+       * BinaryExpression.cs: very naive implementation of emitting
+       array accesses.
+
+2008-03-11  Jb Evain  <jbevain@novell.com>
+
+       * *.cs: Move the different Emit* helpers to EmitContext,
+       so that they get used more naturally by the non Expression
+       types.
+
+2008-03-10  Jb Evain  <jbevain@novell.com>
+
+       * TypeBinaryExpression.cs, Expression.cs: refactor an EmitIsInst.
+       * UnaryExpression.cs: implement TypeAs using the EmitIsInst.
+
+2008-03-10  Jb Evain  <jbevain@novell.com>
+
+       * TypeBinaryExpression.cs (Emit): implement.
+
+2008-03-08  Jb Evain  <jbevain@novell.com>
+
+       * MemberListBinding.cs (Emit): implement.
+       * MemberBinding.cs (EmitLoadMember): add helper.
+
+2008-03-08  Jb Evain  <jbevain@novell.com>
+
+       * MemberAssignment.cs (Emit): implement.
+
+2008-03-08  Jb Evain  <jbevain@novell.com>
+
+       * ElementInit.cs (Emit): implement.
+
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+       * EmitContext.cs: the DebugContext delegate the CreateDelegate
+       to a DynamicContext to avoid visibility issues in debug mode.
+
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+       * EmitContext.cs: Lambda methods bypass JIT visibility checks.
+
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+       * MethodCallExpression.cs, Expression.cs: refactor method calling
+       into a more sophisticated EmitCall in Expression.
+       * InvocationExpression.cs (Emit): implement using the previous EmitCall.
+
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs: add a EmitCall helper.
+       * MemberExpression.cs: implement property access.
+
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+       * MethodCallExpression.cs, Expression.cs: refactor a EmitLoad in Expression.
+       * MemberExpression.cs: use EmitLoad to load the instance field if needed.
+
+2008-03-06  Jb Evain  <jbevain@novell.com>
+
+       * BinaryExpression.cs, Expression.cs: move EmitStored from
+       BinaryExpression to Expression.
+       * MethodCallExpression.cs: allow method calls on structs.
+
+2008-03-05  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs: Fix the Call method which takes an array
+       of type arguments.
+
+2008-03-05  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs: fix for a good chunk of lifted/liftToNull tests.
+
+2008-02-26  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs (Call): Guess the parameters type from the argument
+       types if needed.
+
+2008-02-25  Jb Evain  <jbevain@novell.com>
+
+       * NewExpression.cs (Emit): deal with value types construction.
+
+2008-02-25  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs, NewExpression.cs: deal with the fact that value types
+       don't have a parameterless constructor.
+
+2008-02-24  Jb Evain  <jbevain@novell.com>
+
+       * LambdaExpression.cs, EmitContext.cs: make compilation
+       of delegate returning void work.
+
+2008-02-24  Jb Evain  <jbevain@novell.com>
+
+       * MethodCallExpression.cs: emit call or callvirt depending
+       on the virtuality of the method.
+
+2008-02-24  Jb Evain  <jbevain@novell.com>
+
+       * LambdaExpression.cs: properly format error message.
+
+2008-02-21  Jb Evain  <jbevain@novell.com>
+
+       * BinaryExpression.cs (EmitCoalesce): fix setup_null.
+
+2008-02-21  Jb Evain  <jbevain@novell.com>
+
+       * BinaryExpression.cs (Emit): fix the both_are_null case.
+
+2008-02-20  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs, ExpressionPrinter.cs: implement MemberBind.
+
+2008-02-20  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs, ExpressionPrinter.cs: implement ListInit.
+
+2008-02-19  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs, ExpressionPrinter.cs: implement MemberInit.
+
+2008-02-19  Jb Evain  <jbevain@novell.com>
+
+       * Expression.cs, ExpressionPrinter.cs: implement last New
+       overload for anonymous types.
+
 2008-02-08  Jb Evain  <jbevain@novell.com>
 
        * Expression.cs, InvocationExpression.cs, ExpressionPrinter.cs
 
        * Expression.cs, InvocationExpession.cs,
        ListInitExpression.cs, MemberInitExpression.cs
-       NewExpression.cs : Add all missing 
+       NewExpression.cs : Add all missing
        constructor in Expressions and remove the base one
 
 2008-01-25  Jb Evain  <jbevain@novell.com>
        used those from mcs, that was wrong.   use the proper ones, clean
        up the result.
 
-       * BinaryExpression.cs: Add method invocations for binary methods. 
+       * BinaryExpression.cs: Add method invocations for binary methods.
 
 2008-01-22  Jb Evain  <jbevain@novell.com>
 
        TODO: this does not use the "Conversion" Lambda, which am not sure
        who generates this or what it is used for.
 
-       (EmitLogical): Fix a couple of bugs in AndAlso, OrElse. 
+       (EmitLogical): Fix a couple of bugs in AndAlso, OrElse.
 
        * Expression.cs: Add support for Coalesce.
        (BinaryCoreCheck): Move more checking here, instead of the helper
        routines, will remove them next.
-       
+
        * LambdaExpression.cs (Compile): Create the delegate last, so we
        manage to save the assembly while debugging in case of error
 
 
        * Expression.cs (BinaryCoreCheck): Add checking for a few
        operators here (to avoid doing a second pass, handles AndAlso and
-       OrElse). 
+       OrElse).
 
        (AndAlso, OrElse): Add some code.
 
        get_Value, as we already probed for the lack of value.
 
        Split out support for And/Or to a separate routine as the code is
-       not very easy to share with the arithmetics code. 
+       not very easy to share with the arithmetics code.
 
 2008-01-21  Marek Safar  <marek.safar@gmail.com>
 
 
        * Start code generation for nullables, currently this generates
        incorrect code for things like:
-       
+
        Expression<Func<int?, int?, int?>> e2 = (a, b) => a + b;
        e2.Compile ().Invoke (null, 3))
 
        * Introduce LINQ_DBG env variable, which generates a linq file in
        /tmp;   It currently does not work as well as it should, as the
        Func<> parameters do not mwatch the generated method.
-       Investigate. 
-       
+       Investigate.
+
 
 2008-01-20  Miguel de Icaza  <miguel@novell.com>
 
        Introduce support for Nullable arguments, no code is generated for
        these yet, its only tests + node creation behavior at this point.
-       
+
        * Expression.cs (BinaryCoreCheck): Do not allow "int?" and "int"
        as operators, they must both be nullable.
 
        NullableTypes in the arguments are transformed into the underlying
-       values when doing the method validation.  
+       values when doing the method validation.
 
 2008-01-18  Miguel de Icaza  <miguel@novell.com>
 
 2008-01-18  Miguel de Icaza  <miguel@novell.com>
 
        * BinaryExpression.cs: Add support for emitting code for some
-       operators (ported from the Mono C# compiler).   
+       operators (ported from the Mono C# compiler).
 
        Add tests.
 
 
        Beginning of code generation framework for Linq.Expressions.
        Some code was borrowed by from the C# compiler
-       
+
        * Expression_T.cs: Fill in the blanks.
-       
+
        * LambdaExpression.cs: Validation of parameters mostly, a tiny bit
        of codegen.
 
        * ConstantExpression.cs: Mostly done, need to write tests for
-       non-fundamental types and other ValueType initializations. 
+       non-fundamental types and other ValueType initializations.
 
 2008-01-17  Jb Evain  <jbevain@novell.com>
 
 
 2008-01-16  Miguel de Icaza  <miguel@novell.com>
 
-       * Expression.cs: Add support for user-defined operators. 
+       * Expression.cs: Add support for user-defined operators.
 
        Put back various binary operator tests.