[svn] r6067: nemerle/trunk/ncc: testsuite/negative/yield-delayed.n typing/Typer.n typing/Typer2.n

malekith svnadmin at nemerle.org
Fri Jan 20 20:08:39 CET 2006


Log:
Run delayed typing after typing function using yield.

Author: malekith
Date: Fri Jan 20 20:08:38 2006
New Revision: 6067

Added:
   nemerle/trunk/ncc/testsuite/negative/yield-delayed.n
Modified:
   nemerle/trunk/ncc/typing/Typer.n
   nemerle/trunk/ncc/typing/Typer2.n

Added: nemerle/trunk/ncc/testsuite/negative/yield-delayed.n
==============================================================================
--- (empty file)
+++ nemerle/trunk/ncc/testsuite/negative/yield-delayed.n	Fri Jan 20 20:08:38 2006
@@ -0,0 +1,7 @@
+#pragma indent
+
+public class Term
+    public GetEnumerator () : System.Collections.Generic.IEnumerator [object]
+      _ = fun (t, m) { t.foobar } // E: typing fails on accessing member
+      yield null
+

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Fri Jan 20 20:08:38 2006
@@ -151,8 +151,13 @@
               put_in_error_mode ();
               m.Body = WrapYieldingFunction (m.Body);
               inside_yielding_function = true;
-              when (errcnt == Message.ErrorCount)
+              when (errcnt == Message.ErrorCount) {
+                assert (solver.IsTopLevel);
+                solver.dt_store = Map ();
                 RunTyper ();
+              }
+              when (errcnt == Message.ErrorCount)
+                RunDelayedTypings ();
               when (errcnt == Message.ErrorCount) {
                 RunSecondPass (m);
                 MaybeDumpTypedTree ();

Modified: nemerle/trunk/ncc/typing/Typer2.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer2.n	(original)
+++ nemerle/trunk/ncc/typing/Typer2.n	Fri Jan 20 20:08:38 2006
@@ -192,8 +192,7 @@
           match (dt.DtKind) {
             | Typer.DelayedTyping.Kind.Resolved (expr) =>
               Unfold (expr)
-            | _ => assert (false)
-                 //  TExpr.Error ()
+            | _ => Util.ice ($ "unresolved expression: $dt");
           }
         | TExpr.TypeConversion =>
           PushConversionDown (expr)



More information about the svn mailing list