Author: marek
Date: 2008-01-25 12:21:36 -0500 (Fri, 25 Jan 2008)
New Revision: 93926

Modified:
   trunk/mcs/mcs/ChangeLog
   trunk/mcs/mcs/expression.cs
Log:
2008-01-25  Marek Safar  <[EMAIL PROTECTED]>

        * expression.cs: Implemented Divide, Equal, ExclusiveOr, 
GreaterThanOrEqual
        expressions.
        


Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2008-01-25 16:47:09 UTC (rev 93925)
+++ trunk/mcs/mcs/ChangeLog     2008-01-25 17:21:36 UTC (rev 93926)
@@ -1,5 +1,10 @@
 2008-01-25  Marek Safar  <[EMAIL PROTECTED]>
 
+       * expression.cs: Implemented Divide, Equal, ExclusiveOr, 
GreaterThanOrEqual
+       expressions.
+       
+2008-01-25  Marek Safar  <[EMAIL PROTECTED]>
+
        * generic.cs: Use full implicit conversion for type inference fixing.
        
 2008-01-24  Marek Safar  <[EMAIL PROTECTED]>

Modified: trunk/mcs/mcs/expression.cs
===================================================================
--- trunk/mcs/mcs/expression.cs 2008-01-25 16:47:09 UTC (rev 93925)
+++ trunk/mcs/mcs/expression.cs 2008-01-25 17:21:36 UTC (rev 93926)
@@ -3071,6 +3071,8 @@
                Expression CreateExpressionTree (EmitContext ec, 
MethodGroupExpr method)                
                {
                        string method_name;
+                       bool lift_arg = false;
+                       
                        switch (oper) {
                        case Operator.Addition:
                                if (method == null && ec.CheckState)
@@ -3081,9 +3083,24 @@
                        case Operator.BitwiseAnd:
                                method_name = "And";
                                break;
+                       case Operator.Division:
+                               method_name = "Divide";
+                               break;
+                       case Operator.Equality:
+                               method_name = "Equal";
+                               lift_arg = true;
+                               break;
+                       case Operator.ExclusiveOr:
+                               method_name = "ExclusiveOr";
+                               break;                          
                        case Operator.GreaterThan:
                                method_name = "GreaterThan";
+                               lift_arg = true;
                                break;
+                       case Operator.GreaterThanOrEqual:
+                               method_name = "GreaterThanOrEqual";
+                               lift_arg = true;
+                               break;                          
                        case Operator.LessThan:
                                method_name = "LessThan";
                                break;
@@ -3105,8 +3122,12 @@
                        ArrayList args = new ArrayList (2);
                        args.Add (new Argument (left.CreateExpressionTree 
(ec)));
                        args.Add (new Argument (right.CreateExpressionTree 
(ec)));
-                       if (method != null)
+                       if (method != null) {
+                               if (lift_arg)
+                                       args.Add (new Argument (new 
BoolConstant (false, loc)));
+                               
                                args.Add (new Argument 
(method.CreateExpressionTree (ec)));
+                       }
                        
                        return CreateExpressionFactoryCall (method_name, args);
                }

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

Reply via email to