Author: martin
Date: 2005-04-12 08:06:44 -0400 (Tue, 12 Apr 2005)
New Revision: 42824

Modified:
   trunk/mcs/gmcs/ChangeLog
   trunk/mcs/gmcs/expression.cs
Log:
**** Merged r40513 from MCS ****


Modified: trunk/mcs/gmcs/ChangeLog
===================================================================
--- trunk/mcs/gmcs/ChangeLog    2005-04-12 12:05:43 UTC (rev 42823)
+++ trunk/mcs/gmcs/ChangeLog    2005-04-12 12:06:44 UTC (rev 42824)
@@ -1,5 +1,11 @@
 2005-02-11  Miguel de Icaza  <[EMAIL PROTECTED]>
 
+       * expression.cs (Cast): Overload DoResolveLValue so we can pass
+       resolve our casted expression as an LValue.  This triggers the
+       proper LValue processing that is later required by Assign.
+
+       This fixes 72347.
+
        * cs-tokenizer.cs (pp_and): recurse on pp_and, fixes #61903.
 
 2005-02-11  Marek Safar  <[EMAIL PROTECTED]>

Modified: trunk/mcs/gmcs/expression.cs
===================================================================
--- trunk/mcs/gmcs/expression.cs        2005-04-12 12:05:43 UTC (rev 42823)
+++ trunk/mcs/gmcs/expression.cs        2005-04-12 12:06:44 UTC (rev 42824)
@@ -1804,12 +1804,26 @@
                        return null;
                }
                
+               public override Expression DoResolveLValue (EmitContext ec, 
Expression right_side)
+               {
+                       expr = expr.DoResolveLValue (ec, right_side);
+                       if (expr == null)
+                               return null;
+
+                       return ResolveRest (ec);
+               }
+
                public override Expression DoResolve (EmitContext ec)
                {
                        expr = expr.Resolve (ec);
                        if (expr == null)
                                return null;
 
+                       return ResolveRest (ec);
+               }
+
+               Expression ResolveRest (EmitContext ec)
+               {
                        TypeExpr target = target_type.ResolveAsTypeTerminal 
(ec);
                        if (target == null)
                                return null;
@@ -1839,7 +1853,7 @@
                        expr = Convert.ExplicitConversion (ec, expr, type, loc);
                        return expr;
                }
-
+               
                public override void Emit (EmitContext ec)
                {
                        //

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

Reply via email to