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