Re-enabled CS1612 test.
authorMarek Safar <marek.safar@gmail.com>
Wed, 7 Nov 2007 15:57:03 +0000 (15:57 -0000)
committerMarek Safar <marek.safar@gmail.com>
Wed, 7 Nov 2007 15:57:03 +0000 (15:57 -0000)
svn path=/trunk/mcs/; revision=89114

mcs/mcs/ecore.cs
mcs/mcs/expression.cs

index cd47ad587e5e9288108d5db9777817e1c52010ad..c3f8958b0e3437028559b3958de6105688385a86 100644 (file)
@@ -1146,7 +1146,7 @@ namespace Mono.CSharp {
                        Report.Error (205, loc, "Cannot call an abstract base member `{0}'", name);
                }
                
-               protected void Error_CannotModiftyIntermediateExpressionValue ()
+               protected void Error_CannotModifyIntermediateExpressionValue ()
                {
                        Report.Error (1612, loc, "Cannot modify a value type return value of `{0}'. Consider storing the value in a temporary variable",
                                GetSignatureForError ());
@@ -5114,7 +5114,7 @@ namespace Mono.CSharp {
                        }
 
                        if (right_side == EmptyExpression.LValueMemberAccess || right_side == EmptyExpression.LValueMemberOutAccess) {
-                               Error_CannotModiftyIntermediateExpressionValue ();
+                               Error_CannotModifyIntermediateExpressionValue ();
                        }
 
                        if (setter == null){
index 8820294543a3ba5e099db5f2338f45655b0c7275..8ec6f44b2137bee1c57f138e30eecb47e20feded 100644 (file)
@@ -7022,8 +7022,8 @@ namespace Mono.CSharp {
                        if (t.IsPointer)
                                return MakePointerAccess (ec, t);
 
-                       //if (t.IsValueType)
-                       //      Error_CannotModiftyIntermediateExpressionValue ();
+                       if (Expr.eclass != ExprClass.Variable && t.IsValueType)
+                               Error_CannotModifyIntermediateExpressionValue ();
 
                        return (new IndexerAccess (this, loc)).DoResolveLValue (ec, right_side);
                }
@@ -7634,7 +7634,7 @@ namespace Mono.CSharp {
 
                        // if the indexer returns a value type, and we try to set a field in it
                        if (right_side == EmptyExpression.LValueMemberAccess || right_side == EmptyExpression.LValueMemberOutAccess) {
-                               Error_CannotModiftyIntermediateExpressionValue ();
+                               Error_CannotModifyIntermediateExpressionValue ();
                        }
 
                        Expression e = ResolveAccessor (ec, AccessorType.Set);