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