[svn] r7626: nemerle/trunk/ncc: testsuite/positive/infer.n typing/Typer.n

malekith svnadmin at nemerle.org
Thu Apr 26 21:11:13 CEST 2007


Log:
Run delayed typing also after typing field initializers.

Author: malekith
Date: Thu Apr 26 21:11:11 2007
New Revision: 7626

Modified:
   nemerle/trunk/ncc/testsuite/positive/infer.n
   nemerle/trunk/ncc/typing/Typer.n

Modified: nemerle/trunk/ncc/testsuite/positive/infer.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/infer.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/infer.n	Thu Apr 26 21:11:11 2007
@@ -99,6 +99,11 @@
 }
 
 
+class BugWithFieldInitializers {
+    mangling_exceptions : Hashtable [string, object] = [
+      "!="
+    ].FoldLeft (Hashtable (), fun (s, a) { a.Add (s, null); a });
+}
 
 
 namespace DelayedTyping {

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Thu Apr 26 21:11:11 2007
@@ -155,17 +155,17 @@
               def errcnt = Message.ErrorCount;
               
               RunTyper ();
-              MaybeDumpTypedTree ();
+              MaybeDumpTypedTree ("after typer");
               typer_done = true;
               
               assert (Manager.IsIntelliSenseMode || !messenger.SeenError);
               messenger.InErrorMode = true;
               RunDelayedTypings ();
-              MaybeDumpTypedTree ();
+              MaybeDumpTypedTree ("after delayed typings");
               
               when (errcnt == Message.ErrorCount) {
                 RunSecondPass (m);
-                MaybeDumpTypedTree ();
+                MaybeDumpTypedTree ("after second pass");
               }
             } catch {
               | e is RestartInErrorMode =>
@@ -196,7 +196,7 @@
                 RunDelayedTypings ();
               when (errcnt == Message.ErrorCount) {
                 RunSecondPass (m);
-                MaybeDumpTypedTree ();
+                MaybeDumpTypedTree ("after second pass [yield mode]");
               }
           }
         })
@@ -263,12 +263,12 @@
       current_method_builder
     }
 
-    MaybeDumpTypedTree () : void
+    MaybeDumpTypedTree (msg : string) : void
     {
       when (Manager.Options.ShouldDump (current_fun)) {
         match (current_fun.body) {
           | FunBody.Typed (expr) =>
-            Message.Debug (expr.loc, $ "$current_type.$(current_fun.name) -> "
+            Message.Debug (expr.loc, $ "$msg: $current_type.$(current_fun.name) -> "
                                        "$(current_fun.ret_type) : " +
                                      PrettyPrint.SprintTyExpr (None (), expr) + "\n")
           | _ => ()
@@ -349,6 +349,7 @@
             TypeExpr (PT.PExpr.Sequence (current_type.init_list))
           ) :: [];
         field_inits_typed = true;
+        RunDelayedTypings ();
       }
 
       def t2 = Typer2 (current_type, meth);



More information about the svn mailing list