* ConditionalExpression.cs: implement Emit.
svn path=/trunk/mcs/; revision=94092
+2008-01-27 Jb Evain <jbevain@novell.com>
+
+ * ConditionalExpression.cs: implement Emit.
+
2008-01-27 Jb Evain <jbevain@novell.com>
* Expression.cs: implement the last Lambda method.
2008-01-27 Jb Evain <jbevain@novell.com>
* Expression.cs: implement the last Lambda method.
+using System.Reflection.Emit;
namespace System.Linq.Expressions {
namespace System.Linq.Expressions {
internal override void Emit (EmitContext ec)
{
internal override void Emit (EmitContext ec)
{
- throw new NotImplementedException ();
+ var ig = ec.ig;
+ var false_target = ig.DefineLabel ();
+ var end_target = ig.DefineLabel ();
+
+ test.Emit (ec);
+ ig.Emit (OpCodes.Brfalse, false_target);
+
+ ifTrue.Emit (ec);
+ ig.Emit (OpCodes.Br, end_target);
+
+ ig.MarkLabel (false_target);
+ ifFalse.Emit (ec);
+
+ ig.MarkLabel (end_target);