2008-01-30 Jb Evain <jbevain@novell.com>
[mono.git] / mcs / class / System.Core / System.Linq.Expressions / ChangeLog
1 2008-01-30  Jb Evain  <jbevain@novell.com>
2
3         * LambdaExpression.cs, EmitContext.cs: small refactoring.
4         Extract the different EmitContexts to their own file.
5
6 2008-01-29  Jb Evain  <jbevain@novell.com>
7
8         * MethodCallExpression.cs, Expression.cs: complete Calls.
9
10 2008-01-29  Jb Evain  <jbevain@novell.com>
11
12         * Expression.cs, NewExpression.cs, ExpressionPrinter.cs:
13         implement the first flavors of New.
14
15 2008-01-27  Jb Evain  <jbevain@novell.com>
16
17         * ConditionalExpression.cs: implement Emit.
18
19 2008-01-27  Jb Evain  <jbevain@novell.com>
20
21         * Expression.cs: implement the last Lambda method.
22
23 2008-01-27  Jb Evain  <jbevain@novell.com>
24
25         * LambdaExpression.cs: fix the Type of the LambdaExpressions.
26
27 2008-01-27  Olivier Dufour  <olivier.duff@gmail.com>
28
29         * Expression.cs, InvocationExpession.cs,
30         ListInitExpression.cs, MemberInitExpression.cs
31         NewExpression.cs : Add all missing 
32         constructor in Expressions and remove the base one
33
34 2008-01-25  Jb Evain  <jbevain@novell.com>
35
36         * Expression.cs, ExpressionPrinter.cs: implement Bind.
37
38 2008-01-25  Jb Evain  <jbevain@novell.com>
39
40         * MemberMemberBinding.cs, MemberListBinding.cs,
41         MemberAssignment.cs, MemberBinding.cs:
42         add constructors.
43
44 2008-01-25  Jb Evain  <jbevain@novell.com>
45
46         * Expression.cs: implement PropertyOrField.
47
48 2008-01-24  Jb Evain  <jbevain@novell.com>
49
50         * Expression.cs, MemberExpression.cs, ExpressionPrinter.cs:
51         implement Field and Property.
52
53 2008-01-22  Miguel de Icaza  <miguel@novell.com>
54
55         * BinaryExpression.cs: Unleash the power of cut and paste.
56
57         Bring a bunch of operatros from mcs/expression.cs
58
59         * Expression.cs: There is no op_LogicalAnd or op_LogicalOr, I just
60         used those from mcs, that was wrong.   use the proper ones, clean
61         up the result.
62
63         * BinaryExpression.cs: Add method invocations for binary methods. 
64
65 2008-01-22  Jb Evain  <jbevain@novell.com>
66
67         * Expression.cs, ExpressionPrinter.cs: implement NewArrayList.
68
69 2008-01-22  Jb Evain  <jbevain@novell.com>
70
71         * Expression.cs, ExpressionPrinter.cs, NewArrayExpression.cs:
72         implement Expression.NewArrayBounds.
73
74 2008-01-22  Jb Evain  <jbevain@novell.com>
75
76         * ExpressionPrinter.cs: fix Lambda and Equal.
77
78 2008-01-22  Miguel de Icaza  <miguel@novell.com>
79
80         * BinaryExpression.cs (EmitCoalesce): Add support for emitting
81         code for Coalesce.
82
83         TODO: this does not use the "Conversion" Lambda, which am not sure
84         who generates this or what it is used for.
85
86         (EmitLogical): Fix a couple of bugs in AndAlso, OrElse. 
87
88         * Expression.cs: Add support for Coalesce.
89         (BinaryCoreCheck): Move more checking here, instead of the helper
90         routines, will remove them next.
91         
92         * LambdaExpression.cs (Compile): Create the delegate last, so we
93         manage to save the assembly while debugging in case of error
94
95 2008-01-21  Miguel de Icaza  <miguel@novell.com>
96
97         * Expression.cs (BinaryCoreCheck): Add checking for a few
98         operators here (to avoid doing a second pass, handles AndAlso and
99         OrElse). 
100
101         (AndAlso, OrElse): Add some code.
102
103         * BinaryExpression.cs: Instead of using GetValueOrDefault use
104         get_Value, as we already probed for the lack of value.
105
106         Split out support for And/Or to a separate routine as the code is
107         not very easy to share with the arithmetics code. 
108
109 2008-01-21  Marek Safar  <marek.safar@gmail.com>
110
111         * BinaryExpression.cs: Fixed initobj initialization.
112
113 2008-01-21  Jb Evain  <jbevain@novell.com>
114
115         * Expression.cs, UnaryExpression.cs, BinaryExpression.cs:
116         Move the IsUnsigned helper from BinaryExpression to Expression,
117         so it can be used in UnaryExpression.
118
119 2008-01-21  Miguel de Icaza  <miguel@novell.com>
120
121         * Start code generation for nullables, currently this generates
122         incorrect code for things like:
123         
124         Expression<Func<int?, int?, int?>> e2 = (a, b) => a + b;
125         e2.Compile ().Invoke (null, 3))
126
127         This should return null, but returns something else.
128
129         * Introduce LINQ_DBG env variable, which generates a linq file in
130         /tmp;   It currently does not work as well as it should, as the
131         Func<> parameters do not mwatch the generated method.
132         Investigate. 
133         
134
135 2008-01-20  Miguel de Icaza  <miguel@novell.com>
136
137         Introduce support for Nullable arguments, no code is generated for
138         these yet, its only tests + node creation behavior at this point.
139         
140         * Expression.cs (BinaryCoreCheck): Do not allow "int?" and "int"
141         as operators, they must both be nullable.
142
143         NullableTypes in the arguments are transformed into the underlying
144         values when doing the method validation.  
145
146 2008-01-18  Miguel de Icaza  <miguel@novell.com>
147
148         * ParameterExpression.cs: Add emit support.
149
150 2008-01-18  Jb Evain  <jbevain@novell.com>
151
152         * Expression[Printer|Visitor].cs: implement UnaryPlus, Not, Negate.
153
154 2008-01-18  Miguel de Icaza  <miguel@novell.com>
155
156         * BinaryExpression.cs: Add support for emitting code for some
157         operators (ported from the Mono C# compiler).   
158
159         Add tests.
160
161 2008-01-17  Miguel de Icaza  <miguel@novell.com>
162
163         Beginning of code generation framework for Linq.Expressions.
164         Some code was borrowed by from the C# compiler
165         
166         * Expression_T.cs: Fill in the blanks.
167         
168         * LambdaExpression.cs: Validation of parameters mostly, a tiny bit
169         of codegen.
170
171         * ConstantExpression.cs: Mostly done, need to write tests for
172         non-fundamental types and other ValueType initializations. 
173
174 2008-01-17  Jb Evain  <jbevain@novell.com>
175
176         * Expression.cs: implement MakeMemberAccess.
177
178 2008-01-17  Jb Evain  <jbevain@novell.com>
179
180         * Expression.cs, ExpressionPrinter.cs, BinaryExpression.cs:
181         implement ArrayIndex.
182
183 2008-01-17  Jb Evain  <jbevain@novell.com>
184
185         * Expression.cs: Use TypeCode for IsInt and IsNumber.
186
187 2008-01-16  Miguel de Icaza  <miguel@novell.com>
188
189         * Expression.cs: Add support for user-defined operators. 
190
191         Put back various binary operator tests.
192
193 2008-01-16  Jb Evain  <jbevain@novell.com>
194
195         * Expression.cs, ExpressionPrinter.cs: fix call for static methods.
196
197 2008-01-15  Miguel de Icaza  <miguel@novell.com>
198
199         * Expression.cs: Do validation on the method parameters and use
200         the return type if provided.
201
202 2008-01-15  Jb Evain  <jbevain@novell.com>
203
204         * MethodCallExpression.cs, Expression.cs
205         ExpressionPrinter.cs: Implement Call (Expression, ...)
206
207 2008-01-15  Jb Evain  <jbevain@novell.com>
208
209         * Expression.cs, ConditionalExpressionExpression.cs
210         ExpressionPrinter.cs : implement Expression.Condition.
211
212 2008-01-15  Jb Evain  <jbevain@novell.com>
213
214         * Expression.cs,
215         ParameterExpression.cs,
216         ExpressionPrinter.cs: implement Expression.Parameter
217
218 2008-01-15  Jb Evain  <jbevain@novell.com>
219
220         * ExpressionPrinter.cs (VisitBinaryExpression): simple
221         implementation (probably misses a few cases).
222
223 2008-01-14  Miguel de Icaza  <miguel@novell.com>
224
225         * Expression.cs: Bring back the (most) of binary operators.  Added
226         type checking as well and reorganized the source file by topic
227         instead of alphabetical sorting.
228
229 2008-01-14  Jb Evain  <jbevain@novell.com>
230
231         * ExpressionPrinter.cs: print ArrayLength.
232
233 2008-01-14  Jb Evain  <jbevain@novell.com>
234
235         * Expression.cs: TypeAs can't take value types.
236         * ExpressionPrinter.cs: implement TypeAs.
237
238 2008-01-14  Jb Evain  <jbevain@novell.com>
239
240         * Expression.cs: implement TypeIs.
241         * ExpressionPrinter.cs: implement VisitTypeBinaryExpression.
242         * TypeBinaryExpression.cs: add proper ctor.
243
244 2008-01-14  Jb Evain  <jbevain@novell.com>
245
246         * Expression.cs, ExpressionPrinter.cs: fix for Quote's type.
247
248 2008-01-14  Jb Evain  <jbevain@novell.com>
249
250         * BinaryExpression.cs,
251         * Expression.cs: revert part of Miguel's last patch.
252         MakeBinary is expected to call the appropriate factory
253         methods. Whose methods that are responsible for creating
254         the good BinaryExpression, wether they use a custom method
255         or not.
256
257 2008-01-14  Jb Evain  <jbevain@novell.com>
258
259         * Expression.cs: MakeUnary is expected to call the appropriate
260         factory methods.
261
262 2008-01-14  Miguel de Icaza  <miguel@novell.com>
263
264         * Expression.cs (Constant, MakeBinary and consumers of it): Some
265         more fill-up changes.
266
267         MakeBinary will need much more work to support user-provided
268         types.
269
270 2008-01-13  Jb Evain  <jbevain@novell.com>
271
272         * *.cs: fresh implementation.