[svn] r6281: nemerle/trunk/tools/nemerlish/eval.n

nazgul svnadmin at nemerle.org
Sun May 14 21:20:24 CEST 2006


Log:
Do not create it reference for void expression

Author: nazgul
Date: Sun May 14 21:20:23 2006
New Revision: 6281

Modified:
   nemerle/trunk/tools/nemerlish/eval.n

Modified: nemerle/trunk/tools/nemerlish/eval.n
==============================================================================
--- nemerle/trunk/tools/nemerlish/eval.n	(original)
+++ nemerle/trunk/tools/nemerlish/eval.n	Sun May 14 21:20:23 2006
@@ -350,8 +350,7 @@
           | [SyntaxElement.Expression (expr)] =>
             Evaluator.locals = [];
             def l = ctx.GetLocals ().GetLocals ();
-            def values = <[ $expr : System.Object ]> :: 
-                         l.Fold ([], fun (n : Name, loc : LocalValue, acc) {
+            mutable values = l.Fold ([], fun (n : Name, loc : LocalValue, acc) {
               match (n.ToString ()) {
                 | "it" => acc
                 | _ when loc.ValKind is LocalValue.Kind.BlockReturn => acc
@@ -362,8 +361,13 @@
                   <[ ($(n : name) : System.Object) ]> :: acc
               }
             });
-            Evaluator.locals = (false, "it", PrettyPrint.TyVarToParseTree 
-                               (ctx.TypeExpr (expr).Type)) :: Evaluator.locals;
+            def exprty = ctx.TypeExpr (expr).MType;
+            match (exprty) {
+              | MType.Void => ()
+              | _ =>
+                Evaluator.locals = (false, "it", PrettyPrint.TyVarToParseTree (exprty)) :: Evaluator.locals;
+                values ::= <[ $expr : System.Object ]>;
+            }
             <[ [..$values] ]>
           | _ => Util.ice ()
         }



More information about the svn mailing list