Merge branch 'master' of http://github.com/mono/mono
[mono.git] / mcs / class / System.Core / System.Linq.Expressions / ChangeLog
1 2010-07-26  Jb Evain  <jbevain@novell.com>
2
3         * EmitContext.cs: Properly call methods on enumerations.
4         Fixes #625367.
5
6 2010-05-19  Jb Evain  <jbevain@novell.com>
7
8         * ConstantExpression.cs: fix emission of nullable constants.
9
10 2010-01-08  Jb Evain  <jbevain@novell.com>
11
12         * Expression.cs (Call): properly deal with zero length array
13         of type arguments for non generic methods. Fixes #568989.
14
15 2009-12-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
16
17         * Expression.cs: expression can be null for static getters. Patch from
18         Miguel de Icaza (miguel@novell.com).
19
20 2009-11-15  Jb Evain  <jbevain@novell.com>
21
22         * Expression (Call): deal with lambda expression <> delegate
23         comparison when filtering methods.
24         Fixes #536637.
25
26 2009-11-15  Jb Evain  <jbevain@novell.com>
27
28         * Expression (Call): better filtering of generic methods.
29         Fixes #537768.
30
31 2009-11-14  Jb Evain  <jbevain@novell.com>
32
33         * UnaryExpression.cs: isolate quoted expressions.
34         * EmitContext.cs (ParameterReplacer): new helper type
35         to replace the parameters of isolated expressions.
36         Fix #550722.
37
38 2009-11-14  Jb Evain  <jbevain@novell.com>
39
40         * ExpressionTransformer.cs: adjust return type of all
41          tranformation methods to make the transformer actually
42          useful.
43
44 2009-10-08  Jb Evain  <jbevain@novell.com>
45
46         * LambdaExpression.cs (Compile): use the interpreter on MonoTouch.
47
48 2009-09-03  Jb Evain  <jbevain@novell.com>
49
50         * ConstantExpression.cs (Emit): add support to emit DBNull values.
51
52 2009-09-03  Jb Evain  <jbevain@novell.com>
53
54         * ConstantExpression.cs (Emit): add support for emitting
55         DateTime constants.
56
57 2009-03-05  Jb Evain  <jbevain@novell.com>
58
59         * EmitContext.cs
60         * ParameterExpression.cs:
61                 add support for hoisted locals.
62
63 2009-02-24  Jb Evain  <jbevain@novell.com>
64
65         * Expression.cs (BinaryCoreCheck): fix comparison of enums
66
67 2009-02-23  Jb Evain  <jbevain@novell.com>
68
69         * Expression.cs (IsNumber): actually decimal is rather a special
70         case, and not a primitive number.
71
72 2009-02-23  Jb Evain  <jbevain@novell.com>
73
74         * Expression.cs (BinaryCoreCheck): add decimal operations
75         are provided by custom operators.
76
77 2008-12-17  Jb Evain  <jbevain@novell.com>
78
79         * ExpressionTransformer.cs: fix VisitList.
80
81 2008-11-19  Jb Evain  <jbevain@novell.com>
82
83         * Expression.cs: protect against open generic methods.
84
85 2008-10-08  Atsushi Enomoto  <atsushi@ximian.com>
86
87         * Expression.cs : give us information about which type does not
88           implement Emit().
89
90 2008-10-03  Jb Evain  <jbevain@novell.com>
91
92         * Expression.cs: make sure we properly test complex generic methods
93         as a Call candidate.
94
95 2008-09-22  Jb Evain  <jbevain@novell.com>
96
97         * TypeBinaryExpression.cs: protect against testing void expressions.
98         Fixes bug #428309.
99
100 2008-09-01  Jb Evain  <jbevain@novell.com>
101
102         * MemberBinding.cs: make .ctor protected instead of public.
103
104 2008-09-01  Jb Evain  <jbevain@novell.com>
105
106         * Expression.cs: guard against null parameters passed to Lambda.
107
108 2008-08-30  Marek Safar  <marek.safar@gmail.com>
109
110         * MemberBinding.cs: Made MemberBinding ctor public
111
112 2008-08-07  Jb Evain  <jbevain@novell.com>
113
114         * Expression.cs (GetAssociatedProperty): strengthen accessors
115         comparisons.
116
117 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
118
119         * BinaryExpression.cs (EmitBinaryOperator): Mask out the upper bits of the
120         shift amount like mcs compiled code does.
121
122 2008-07-19  Jb Evain  <jbevain@novell.com>
123
124         * Expression.cs (Call, Field, Property): disallow instance arguments
125         on static members. See ms connect #339351.
126
127 2008-07-18  Jb Evain  <jbevain@novell.com>
128
129         * Expression.cs, BinaryExpression.cs: fix retrieval of true and false
130         operators.
131
132 2008-06-20  Jb Evain  <jbevain@novell.com>
133
134         * LambdaExpression.cs, EmitContext.cs: refactor the emit context to
135         handle the fact that lambdas are compiled in a general context where
136         they share globals but are also able to use parameters from parent lambdas.
137         (Although parameter sharing is not implemented yet).
138
139         * BinaryExpression.cs (fix converted coalesce case to use the lambda
140         compilation code).
141
142 2008-06-09  Jb Evain  <jbevain@novell.com>
143
144         * Extensions.cs (Type.IsExpression): add
145         * Expression.cs (CheckMethodArguments): modify the argument list
146         to quote arguments when if necessary.
147
148
149 2008-06-09  Jb Evain  <jbevain@novell.com>
150
151         * Expression.cs (CheckLambda): quote body if required.
152
153 2008-06-07  Jb Evain  <jbevain@novell.com>
154
155         * BinaryExpression.cs (EmitConvertedCoalesce): implement.
156
157 2008-06-05  Jb Evain  <jbevain@novell.com>
158
159         * Expression.cs (GetUserConversionMethod): check for convertion
160         operators on both types.
161
162 2008-06-05  Jb Evain  <jbevain@novell.com>
163
164         * Expression.cs (ConditionalBinaryCheck): if a method is passed,
165         checked that the operators true and false are also defined.
166
167 2008-06-05  Jb Evain  <jbevain@novell.com>
168
169         * BinaryExpression.cs (Emit): deal with binary expressions
170         where only the left is lifted.
171
172 2008-06-05  Jb Evain  <jbevain@novell.com>
173
174         * Extensions.cs: Add Type.MakeNullableType helper.
175         * Expression.cs (MakeSimpleBinary, MakeBoolBinar): Properly
176         creat lifted/lifted to null/not lifted
177         user defined binary expressions.
178         * BinaryExpression.cs (Emit): implement compilation of
179         lifted and lifted to null user defined binary operators.
180
181 2008-06-05  Jb Evain  <jbevain@novell.com>
182
183         * Expression.cs (MakeSimpleUnary): properly create lifted/not lifted
184         unary expressions with user defined operators.
185         * UnaryExpression.cs (Emit): fix compilation of lifted user operators.
186
187 2008-05-30  Jb Evain  <jbevain@novell.com>
188
189         * UnaryExpression.cs (Emit): fix convertion from nullable
190         to nullable types.
191
192 2008-05-29  Jb Evain  <jbevain@novell.com>
193
194         * Expression.cs (Power): allow bool?.
195         * BinaryExpression.cs: properly deal with lifted power expression.
196
197 2008-05-29  Jb Evain  <jbevain@novell.com>
198
199         * BinaryExpression.cs (Emit): fix lifted andalso and orelse.
200
201 2008-05-29  Jb Evain  <jbevain@novell.com>
202
203         * BinaryExpression.cs (Emit): properly emit lifted to null
204         relational binary expressions.
205
206 2008-05-28  Jb Evain  <jbevain@novell.com>
207
208         * BinaryExpression.cs (Emit): rework compilation of
209         arithmetic and relational lifted binary expressions.
210
211 2008-05-28  Jb Evain  <jbevain@novell.com>
212
213         * UnaryExpression.cs (Emit): implement support for compiling
214         lifted unary expressions.
215
216 2008-05-27  Jb Evain  <jbevain@novell.com>
217
218         * UnaryExpression.cs (EmitConvert): implement nullable to nullable
219         convert.
220
221 2008-05-20  Roei Erez  <roeie@mainsoft.com>
222
223         * Extensions.cs: Add 'IsGenericImplementationOf' extension method
224
225 2008-05-15  Jb Evain  <jbevain@novell.com>
226
227         * UnaryExpression.cs, EmitContext.cs: emit convert from and
228         to nullable types.
229
230 2008-05-15  Jb Evain  <jbevain@novell.com>
231
232         * Extensions.cs: add a few useful extensions such as
233         IsGenericInstanceOf and MakeGenericFrom.
234
235 2008-05-15  Roei Erez  <roeie@mainsoft.com>
236
237         * ExpressionTransformer.cs: Add a base class for transforming Expressions.
238         In use at AsQueryable() implementation.
239
240 2008-05-14  Jb Evain  <jbevain@novell.com>
241
242         * EmitContext.cs: only generate a new lambda name if we're in
243         a debug context.
244
245 2008-05-14  Jb Evain  <jbevain@novell.com>
246
247         * LambdaExpression.cs, EmitContext.cs: When encountering a lambda
248         inside an ET, compile it as a read of a global. Based on a patch
249         by Roei Erez <roeie@mainsoft.com>
250
251 2008-05-08  Jb Evain  <jbevain@novell.com>
252
253         * Expression.cs, EmitContext.cs: deal with call to methods
254         with byref parameters.
255
256 2008-05-07  Roei Erez  <roeie@mainsoft.com>
257
258         * Add ifdef TARGET_JVM
259
260 2008-05-03  Jb Evain  <jbevain@novell.com>
261
262         * LambdaExpression.cs: move checks to Expression
263         * Expression.cs: apply check for both typed and untyped lambda
264         creation, so that the constructor does not throws exception.
265         Needed to create instances of Expression<> for untyped lambda
266         factory method. Fixes #386322.
267
268 2008-05-02  Jb Evain  <jbevain@novell.com>
269
270         * Expression.cs: make Emit virtual instead of abstract,
271         to allow externals libraries to extend Expression.
272         Patch by Jan Oravec <jan.oravec@6com.sk>. Fixes #386097.
273
274 2008-04-29  Jb Evain  <jbevain@novell.com>
275
276         * UnaryExpression.cs (EmitPrimitiveConversion): implement.
277
278 2008-04-28  Jb Evain  <jbevain@novell.com>
279
280         * EmitContext.cs: deal with globals when encountering them while
281         compiling, and not ahead of time with a dedicated visitor.
282
283 2008-04-27  Jb Evain  <jbevain@novell.com>
284
285         * ConstantExpression.cs (Emit): emit properly null nullable types.
286
287 2008-04-27  Jb Evain  <jbevain@novell.com>
288
289         * Expression.cs: improve method finder.
290
291 2008-04-24  Jb Evain  <jbevain@novell.com>
292
293         * UnaryExpression.cs, EmitContext.cs: implement compilation
294         of Quote as a global load.
295
296 2008-04-23  Jb Evain  <jbevain@novell.com>
297
298         * UnaryExpression.cs: start implementing EmitConvert.
299
300 2008-04-23  Jb Evain  <jbevain@novell.com>
301
302         * ConstantExpression.cs (Emit): properly Emit null constants.
303
304 2008-04-23  Jb Evain  <jbevain@novell.com>
305
306         * Expression.cs (Constant): check for assignability, not for type
307         equality, when a type is passed.
308
309 2008-04-23  Jb Evain  <jbevain@novell.com>
310
311         * ExpressionPrinter.cs: ToString convert properly.
312
313 2008-04-22  Jb Evain  <jbevain@novell.com>
314
315         * UnaryExpression.cs: implement IsLiftedToNull properly.
316         * Expression.cs (Convert, ConvertChecked): implemented computing
317         of IsLifted and IsLiftedToNull for conversions.
318
319 2008-04-22  Jb Evain  <jbevain@novell.com>
320
321         * Expression.cs (Convert, ConvertChecked): implement.
322
323 2008-04-21  Jb Evain  <jbevain@novell.com>
324
325         * Expression.cs (Call): don't rely on the fact that if the
326         instance expression is null, then it's a static call. Explicitely
327         check on the MethodInfo for that.
328         * EmitContext.cs (EmitCall): same pattern.
329
330 2008-04-20  Jb Evain  <jbevain@novell.com>
331
332         * MemberMemberBinding.cs (Emit): implement.
333
334 2008-04-19  Jb Evain  <jbevain@novell.com>
335
336         * EmitContext.cs: infrastructure work to attach a compiled
337         lambda expression to an execution scope, and to detect and store
338         external globals in the scope.
339         * ConstantExpression.cs: load globals from the scope.
340
341 2008-04-19  Jb Evain  <jbevain@novell.com>
342
343         * ExpressionVisitor.cs (Visit): don't die because of Power.
344
345 2008-04-09  Jb Evain  <jbevain@novell.com>
346
347         * Expression.cs: check for illegal booleab unary expressions.
348
349 2008-04-09  Jb Evain  <jbevain@novell.com>
350
351         * UnaryExpression.cs: implement compilation of negate.
352
353 2008-04-09  Jb Evain  <jbevain@novell.com>
354
355         * UnaryExpression.cs, Expression.cs: implement IsLifted and IsLifted
356         to null for simple unary operators. Implement Not compilation.
357
358 2008-04-08  Jb Evain  <jbevain@novell.com>
359
360         * ElementInit.cs: emit pop if the add method doesn't return void.
361
362 2008-03-20  Jb Evain  <jbevain@novell.com>
363
364         * Expression.cs: use the new and more complete IsAssignableTo
365         instead of IsAssignableFrom.
366
367 2008-03-19  Jb Evain  <jbevain@novell.com>
368
369         * LambdaExpression.cs: use the new standardified IsAssignableTo,
370         fixes ExpressionTest_NewArrayBounds.TestArrayAssignability.
371
372 2008-03-19  Jb Evain  <jbevain@novell.com>
373
374         * Extensions.cs (Type.IsAssignableTo): deal with arrays.
375
376 2008-03-13  Jb Evain  <jbevain@novell.com>
377
378         * NewArrayExpression.cs (EmitNewArrayBounds): implement.
379
380 2008-03-12  Jb Evain  <jbevain@novell.com>
381
382         * NewArrayExpression.cs (Emit): naive implementation of emit support
383         for array initialization.
384
385 2008-03-11  Jb Evain  <jbevain@novell.com>
386
387         * BinaryExpression.cs: very naive implementation of emitting
388         array accesses.
389
390 2008-03-11  Jb Evain  <jbevain@novell.com>
391
392         * *.cs: Move the different Emit* helpers to EmitContext,
393         so that they get used more naturally by the non Expression
394         types.
395
396 2008-03-10  Jb Evain  <jbevain@novell.com>
397
398         * TypeBinaryExpression.cs, Expression.cs: refactor an EmitIsInst.
399         * UnaryExpression.cs: implement TypeAs using the EmitIsInst.
400
401 2008-03-10  Jb Evain  <jbevain@novell.com>
402
403         * TypeBinaryExpression.cs (Emit): implement.
404
405 2008-03-08  Jb Evain  <jbevain@novell.com>
406
407         * MemberListBinding.cs (Emit): implement.
408         * MemberBinding.cs (EmitLoadMember): add helper.
409
410 2008-03-08  Jb Evain  <jbevain@novell.com>
411
412         * MemberAssignment.cs (Emit): implement.
413
414 2008-03-08  Jb Evain  <jbevain@novell.com>
415
416         * ElementInit.cs (Emit): implement.
417
418 2008-03-06  Jb Evain  <jbevain@novell.com>
419
420         * EmitContext.cs: the DebugContext delegate the CreateDelegate
421         to a DynamicContext to avoid visibility issues in debug mode.
422
423 2008-03-06  Jb Evain  <jbevain@novell.com>
424
425         * EmitContext.cs: Lambda methods bypass JIT visibility checks.
426
427 2008-03-06  Jb Evain  <jbevain@novell.com>
428
429         * MethodCallExpression.cs, Expression.cs: refactor method calling
430         into a more sophisticated EmitCall in Expression.
431         * InvocationExpression.cs (Emit): implement using the previous EmitCall.
432
433 2008-03-06  Jb Evain  <jbevain@novell.com>
434
435         * Expression.cs: add a EmitCall helper.
436         * MemberExpression.cs: implement property access.
437
438 2008-03-06  Jb Evain  <jbevain@novell.com>
439
440         * MethodCallExpression.cs, Expression.cs: refactor a EmitLoad in Expression.
441         * MemberExpression.cs: use EmitLoad to load the instance field if needed.
442
443 2008-03-06  Jb Evain  <jbevain@novell.com>
444
445         * BinaryExpression.cs, Expression.cs: move EmitStored from
446         BinaryExpression to Expression.
447         * MethodCallExpression.cs: allow method calls on structs.
448
449 2008-03-05  Jb Evain  <jbevain@novell.com>
450
451         * Expression.cs: Fix the Call method which takes an array
452         of type arguments.
453
454 2008-03-05  Jb Evain  <jbevain@novell.com>
455
456         * Expression.cs: fix for a good chunk of lifted/liftToNull tests.
457
458 2008-02-26  Jb Evain  <jbevain@novell.com>
459
460         * Expression.cs (Call): Guess the parameters type from the argument
461         types if needed.
462
463 2008-02-25  Jb Evain  <jbevain@novell.com>
464
465         * NewExpression.cs (Emit): deal with value types construction.
466
467 2008-02-25  Jb Evain  <jbevain@novell.com>
468
469         * Expression.cs, NewExpression.cs: deal with the fact that value types
470         don't have a parameterless constructor.
471
472 2008-02-24  Jb Evain  <jbevain@novell.com>
473
474         * LambdaExpression.cs, EmitContext.cs: make compilation
475         of delegate returning void work.
476
477 2008-02-24  Jb Evain  <jbevain@novell.com>
478
479         * MethodCallExpression.cs: emit call or callvirt depending
480         on the virtuality of the method.
481
482 2008-02-24  Jb Evain  <jbevain@novell.com>
483
484         * LambdaExpression.cs: properly format error message.
485
486 2008-02-21  Jb Evain  <jbevain@novell.com>
487
488         * BinaryExpression.cs (EmitCoalesce): fix setup_null.
489
490 2008-02-21  Jb Evain  <jbevain@novell.com>
491
492         * BinaryExpression.cs (Emit): fix the both_are_null case.
493
494 2008-02-20  Jb Evain  <jbevain@novell.com>
495
496         * Expression.cs, ExpressionPrinter.cs: implement MemberBind.
497
498 2008-02-20  Jb Evain  <jbevain@novell.com>
499
500         * Expression.cs, ExpressionPrinter.cs: implement ListInit.
501
502 2008-02-19  Jb Evain  <jbevain@novell.com>
503
504         * Expression.cs, ExpressionPrinter.cs: implement MemberInit.
505
506 2008-02-19  Jb Evain  <jbevain@novell.com>
507
508         * Expression.cs, ExpressionPrinter.cs: implement last New
509         overload for anonymous types.
510
511 2008-02-08  Jb Evain  <jbevain@novell.com>
512
513         * Expression.cs, InvocationExpression.cs, ExpressionPrinter.cs
514                 add support for Invoke.
515
516 2008-02-04  Jb Evain  <jbevain@novell.com>
517
518         * ExpressionPrinter.cs: fix printing of MemberListBinding.
519
520 2008-02-04  Jb Evain  <jbevain@novell.com>
521
522         * Expression.cs, NewExpression.cs: make New(Type) test pass.
523
524 2008-02-04  Jb Evain  <jbevain@novell.com>
525
526         * ExpressionPrinter.cs: fix and clean printing of ElementInit.
527
528 2008-02-02  Jb Evain  <jbevain@novell.com>
529
530         * Expression.cs: fix ListBind(MemberInfo,IEnumerable<ElementInit>).
531
532 2008-02-02  Jb Evain  <jbevain@novell.com>
533
534         * Expression.cs: fix ListBind(MethodInfo,IEnumerable<ElementInit>).
535
536 2008-02-01  Olivier Dufour  <olivier.duff@gmail.com>
537
538         * Expression.cs, ExpressionPrinter.cs:Add ListBind
539
540 2008-02-01  Olivier Dufour  <olivier.duff@gmail.com>
541
542         * Expression.cs, ExpressionPrinter.cs:Add Elementinit
543
544 2008-01-31  Jb Evain  <jbevain@novell.com>
545
546         * UnaryExpression.cs: emit array length.
547
548 2008-01-31  Jb Evain  <jbevain@novell.com>
549
550         * MemberExpression.cs: Simple support for emitting fields.
551
552 2008-01-30  Jb Evain  <jbevain@novell.com>
553
554         * MethodCallExpression.cs: very naive implementation of Emit.
555
556 2008-01-30  Jb Evain  <jbevain@novell.com>
557
558         * NewExpression.cs: add Emit support for reference types.
559
560 2008-01-30  Jb Evain  <jbevain@novell.com>
561
562         * LambdaExpression.cs, EmitContext.cs: small refactoring.
563         Extract the different EmitContexts to their own file.
564
565 2008-01-29  Jb Evain  <jbevain@novell.com>
566
567         * MethodCallExpression.cs, Expression.cs: complete Calls.
568
569 2008-01-29  Jb Evain  <jbevain@novell.com>
570
571         * Expression.cs, NewExpression.cs, ExpressionPrinter.cs:
572         implement the first flavors of New.
573
574 2008-01-27  Jb Evain  <jbevain@novell.com>
575
576         * ConditionalExpression.cs: implement Emit.
577
578 2008-01-27  Jb Evain  <jbevain@novell.com>
579
580         * Expression.cs: implement the last Lambda method.
581
582 2008-01-27  Jb Evain  <jbevain@novell.com>
583
584         * LambdaExpression.cs: fix the Type of the LambdaExpressions.
585
586 2008-01-27  Olivier Dufour  <olivier.duff@gmail.com>
587
588         * Expression.cs, InvocationExpession.cs,
589         ListInitExpression.cs, MemberInitExpression.cs
590         NewExpression.cs : Add all missing
591         constructor in Expressions and remove the base one
592
593 2008-01-25  Jb Evain  <jbevain@novell.com>
594
595         * Expression.cs, ExpressionPrinter.cs: implement Bind.
596
597 2008-01-25  Jb Evain  <jbevain@novell.com>
598
599         * MemberMemberBinding.cs, MemberListBinding.cs,
600         MemberAssignment.cs, MemberBinding.cs:
601         add constructors.
602
603 2008-01-25  Jb Evain  <jbevain@novell.com>
604
605         * Expression.cs: implement PropertyOrField.
606
607 2008-01-24  Jb Evain  <jbevain@novell.com>
608
609         * Expression.cs, MemberExpression.cs, ExpressionPrinter.cs:
610         implement Field and Property.
611
612 2008-01-22  Miguel de Icaza  <miguel@novell.com>
613
614         * BinaryExpression.cs: Unleash the power of cut and paste.
615
616         Bring a bunch of operatros from mcs/expression.cs
617
618         * Expression.cs: There is no op_LogicalAnd or op_LogicalOr, I just
619         used those from mcs, that was wrong.   use the proper ones, clean
620         up the result.
621
622         * BinaryExpression.cs: Add method invocations for binary methods.
623
624 2008-01-22  Jb Evain  <jbevain@novell.com>
625
626         * Expression.cs, ExpressionPrinter.cs: implement NewArrayList.
627
628 2008-01-22  Jb Evain  <jbevain@novell.com>
629
630         * Expression.cs, ExpressionPrinter.cs, NewArrayExpression.cs:
631         implement Expression.NewArrayBounds.
632
633 2008-01-22  Jb Evain  <jbevain@novell.com>
634
635         * ExpressionPrinter.cs: fix Lambda and Equal.
636
637 2008-01-22  Miguel de Icaza  <miguel@novell.com>
638
639         * BinaryExpression.cs (EmitCoalesce): Add support for emitting
640         code for Coalesce.
641
642         TODO: this does not use the "Conversion" Lambda, which am not sure
643         who generates this or what it is used for.
644
645         (EmitLogical): Fix a couple of bugs in AndAlso, OrElse.
646
647         * Expression.cs: Add support for Coalesce.
648         (BinaryCoreCheck): Move more checking here, instead of the helper
649         routines, will remove them next.
650
651         * LambdaExpression.cs (Compile): Create the delegate last, so we
652         manage to save the assembly while debugging in case of error
653
654 2008-01-21  Miguel de Icaza  <miguel@novell.com>
655
656         * Expression.cs (BinaryCoreCheck): Add checking for a few
657         operators here (to avoid doing a second pass, handles AndAlso and
658         OrElse).
659
660         (AndAlso, OrElse): Add some code.
661
662         * BinaryExpression.cs: Instead of using GetValueOrDefault use
663         get_Value, as we already probed for the lack of value.
664
665         Split out support for And/Or to a separate routine as the code is
666         not very easy to share with the arithmetics code.
667
668 2008-01-21  Marek Safar  <marek.safar@gmail.com>
669
670         * BinaryExpression.cs: Fixed initobj initialization.
671
672 2008-01-21  Jb Evain  <jbevain@novell.com>
673
674         * Expression.cs, UnaryExpression.cs, BinaryExpression.cs:
675         Move the IsUnsigned helper from BinaryExpression to Expression,
676         so it can be used in UnaryExpression.
677
678 2008-01-21  Miguel de Icaza  <miguel@novell.com>
679
680         * Start code generation for nullables, currently this generates
681         incorrect code for things like:
682
683         Expression<Func<int?, int?, int?>> e2 = (a, b) => a + b;
684         e2.Compile ().Invoke (null, 3))
685
686         This should return null, but returns something else.
687
688         * Introduce LINQ_DBG env variable, which generates a linq file in
689         /tmp;   It currently does not work as well as it should, as the
690         Func<> parameters do not mwatch the generated method.
691         Investigate.
692
693
694 2008-01-20  Miguel de Icaza  <miguel@novell.com>
695
696         Introduce support for Nullable arguments, no code is generated for
697         these yet, its only tests + node creation behavior at this point.
698
699         * Expression.cs (BinaryCoreCheck): Do not allow "int?" and "int"
700         as operators, they must both be nullable.
701
702         NullableTypes in the arguments are transformed into the underlying
703         values when doing the method validation.
704
705 2008-01-18  Miguel de Icaza  <miguel@novell.com>
706
707         * ParameterExpression.cs: Add emit support.
708
709 2008-01-18  Jb Evain  <jbevain@novell.com>
710
711         * Expression[Printer|Visitor].cs: implement UnaryPlus, Not, Negate.
712
713 2008-01-18  Miguel de Icaza  <miguel@novell.com>
714
715         * BinaryExpression.cs: Add support for emitting code for some
716         operators (ported from the Mono C# compiler).
717
718         Add tests.
719
720 2008-01-17  Miguel de Icaza  <miguel@novell.com>
721
722         Beginning of code generation framework for Linq.Expressions.
723         Some code was borrowed by from the C# compiler
724
725         * Expression_T.cs: Fill in the blanks.
726
727         * LambdaExpression.cs: Validation of parameters mostly, a tiny bit
728         of codegen.
729
730         * ConstantExpression.cs: Mostly done, need to write tests for
731         non-fundamental types and other ValueType initializations.
732
733 2008-01-17  Jb Evain  <jbevain@novell.com>
734
735         * Expression.cs: implement MakeMemberAccess.
736
737 2008-01-17  Jb Evain  <jbevain@novell.com>
738
739         * Expression.cs, ExpressionPrinter.cs, BinaryExpression.cs:
740         implement ArrayIndex.
741
742 2008-01-17  Jb Evain  <jbevain@novell.com>
743
744         * Expression.cs: Use TypeCode for IsInt and IsNumber.
745
746 2008-01-16  Miguel de Icaza  <miguel@novell.com>
747
748         * Expression.cs: Add support for user-defined operators.
749
750         Put back various binary operator tests.
751
752 2008-01-16  Jb Evain  <jbevain@novell.com>
753
754         * Expression.cs, ExpressionPrinter.cs: fix call for static methods.
755
756 2008-01-15  Miguel de Icaza  <miguel@novell.com>
757
758         * Expression.cs: Do validation on the method parameters and use
759         the return type if provided.
760
761 2008-01-15  Jb Evain  <jbevain@novell.com>
762
763         * MethodCallExpression.cs, Expression.cs
764         ExpressionPrinter.cs: Implement Call (Expression, ...)
765
766 2008-01-15  Jb Evain  <jbevain@novell.com>
767
768         * Expression.cs, ConditionalExpressionExpression.cs
769         ExpressionPrinter.cs : implement Expression.Condition.
770
771 2008-01-15  Jb Evain  <jbevain@novell.com>
772
773         * Expression.cs,
774         ParameterExpression.cs,
775         ExpressionPrinter.cs: implement Expression.Parameter
776
777 2008-01-15  Jb Evain  <jbevain@novell.com>
778
779         * ExpressionPrinter.cs (VisitBinaryExpression): simple
780         implementation (probably misses a few cases).
781
782 2008-01-14  Miguel de Icaza  <miguel@novell.com>
783
784         * Expression.cs: Bring back the (most) of binary operators.  Added
785         type checking as well and reorganized the source file by topic
786         instead of alphabetical sorting.
787
788 2008-01-14  Jb Evain  <jbevain@novell.com>
789
790         * ExpressionPrinter.cs: print ArrayLength.
791
792 2008-01-14  Jb Evain  <jbevain@novell.com>
793
794         * Expression.cs: TypeAs can't take value types.
795         * ExpressionPrinter.cs: implement TypeAs.
796
797 2008-01-14  Jb Evain  <jbevain@novell.com>
798
799         * Expression.cs: implement TypeIs.
800         * ExpressionPrinter.cs: implement VisitTypeBinaryExpression.
801         * TypeBinaryExpression.cs: add proper ctor.
802
803 2008-01-14  Jb Evain  <jbevain@novell.com>
804
805         * Expression.cs, ExpressionPrinter.cs: fix for Quote's type.
806
807 2008-01-14  Jb Evain  <jbevain@novell.com>
808
809         * BinaryExpression.cs,
810         * Expression.cs: revert part of Miguel's last patch.
811         MakeBinary is expected to call the appropriate factory
812         methods. Whose methods that are responsible for creating
813         the good BinaryExpression, wether they use a custom method
814         or not.
815
816 2008-01-14  Jb Evain  <jbevain@novell.com>
817
818         * Expression.cs: MakeUnary is expected to call the appropriate
819         factory methods.
820
821 2008-01-14  Miguel de Icaza  <miguel@novell.com>
822
823         * Expression.cs (Constant, MakeBinary and consumers of it): Some
824         more fill-up changes.
825
826         MakeBinary will need much more work to support user-provided
827         types.
828
829 2008-01-13  Jb Evain  <jbevain@novell.com>
830
831         * *.cs: fresh implementation.