svn path=/trunk/mcs/; revision=42824
2005-02-11 Miguel de Icaza <miguel@novell.com>
2005-02-11 Miguel de Icaza <miguel@novell.com>
+ * 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 <marek.safar@seznam.cz>
* cs-tokenizer.cs (pp_and): recurse on pp_and, fixes #61903.
2005-02-11 Marek Safar <marek.safar@seznam.cz>
+ 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;
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;
TypeExpr target = target_type.ResolveAsTypeTerminal (ec);
if (target == null)
return null;
expr = Convert.ExplicitConversion (ec, expr, type, loc);
return expr;
}
expr = Convert.ExplicitConversion (ec, expr, type, loc);
return expr;
}
public override void Emit (EmitContext ec)
{
//
public override void Emit (EmitContext ec)
{
//