[mcs] Initial by ref returns and variables support
[mono.git] / mcs / mcs / lambda.cs
index 9c804ceca575e6730e194e54a8bce5735a24cb81..360c5c9463002d0d8e1956573bfcb688702589e4 100644 (file)
@@ -188,6 +188,11 @@ namespace Mono.CSharp {
 
                public override Expression CreateExpressionTree (ResolveContext ec)
                {
+                       if (Expr is ReferenceExpression) {
+                               ec.Report.Error (8155, Expr.Location, "Lambda expressions that return by reference cannot be converted to expression trees");
+                               return null;
+                       }
+
                        return Expr.CreateExpressionTree (ec);
                }
 
@@ -216,6 +221,12 @@ namespace Mono.CSharp {
                                if (Expr == null)
                                        return false;
 
+                               if (Expr is ReferenceExpression) {
+                                       // CSC: should be different error code
+                                       ec.Report.Error (8149, loc, "By-reference returns can only be used in lambda expressions that return by reference");
+                                       return false;
+                               }
+
                                statement = Expr as ExpressionStatement;
                                if (statement == null) {
                                        var reduced = Expr as IReducedExpressionStatement;