Author: jbevain
Date: 2008-01-27 17:02:31 -0500 (Sun, 27 Jan 2008)
New Revision: 94092

Modified:
   trunk/mcs/class/System.Core/System.Linq.Expressions/ChangeLog
   trunk/mcs/class/System.Core/System.Linq.Expressions/ConditionalExpression.cs
Log:
2008-01-27  Jb Evain  <[EMAIL PROTECTED]>

        * ConditionalExpression.cs: implement Emit.



Modified: trunk/mcs/class/System.Core/System.Linq.Expressions/ChangeLog
===================================================================
--- trunk/mcs/class/System.Core/System.Linq.Expressions/ChangeLog       
2008-01-27 21:58:48 UTC (rev 94091)
+++ trunk/mcs/class/System.Core/System.Linq.Expressions/ChangeLog       
2008-01-27 22:02:31 UTC (rev 94092)
@@ -1,5 +1,9 @@
 2008-01-27  Jb Evain  <[EMAIL PROTECTED]>
 
+       * ConditionalExpression.cs: implement Emit.
+
+2008-01-27  Jb Evain  <[EMAIL PROTECTED]>
+
        * Expression.cs: implement the last Lambda method.
 
 2008-01-27  Jb Evain  <[EMAIL PROTECTED]>

Modified: 
trunk/mcs/class/System.Core/System.Linq.Expressions/ConditionalExpression.cs
===================================================================
--- 
trunk/mcs/class/System.Core/System.Linq.Expressions/ConditionalExpression.cs    
    2008-01-27 21:58:48 UTC (rev 94091)
+++ 
trunk/mcs/class/System.Core/System.Linq.Expressions/ConditionalExpression.cs    
    2008-01-27 22:02:31 UTC (rev 94092)
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Reflection.Emit;
 
 namespace System.Linq.Expressions {
 
@@ -58,8 +59,20 @@
 
                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);
                }
-               
        }
 }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to