[svn] r5997: nemerle/trunk/ncc/typing/Solver.n

malekith svnadmin at nemerle.org
Tue Dec 6 12:16:52 CET 2005


Log:
Change order of stack.Push/Pop and array indexing, so we will always get index exception, not empty stack exception from the finally block. Increase size of state array to 500, this is needed for typing expression like a.b.c.d.e.f. The typer doesn't seem to exhibit exponential behavior in this case anyway. Resolves #582.

Author: malekith
Date: Tue Dec  6 12:16:52 2005
New Revision: 5997

Modified:
   nemerle/trunk/ncc/typing/Solver.n

Modified: nemerle/trunk/ncc/typing/Solver.n
==============================================================================
--- nemerle/trunk/ncc/typing/Solver.n	(original)
+++ nemerle/trunk/ncc/typing/Solver.n	Tue Dec  6 12:16:52 2005
@@ -92,11 +92,10 @@
       ++serial_stack_top;
       ++last_serial;
       top_serial = last_serial;
-      serial_stack [serial_stack_top] = top_serial;
 
       dt_stack.Push (dt_store);
-
       messenger.PushState ();
+      serial_stack [serial_stack_top] = top_serial;
     }
 
 
@@ -107,10 +106,9 @@
     public PopState () : void
     {
       --serial_stack_top;
-      top_serial = serial_stack [serial_stack_top];
-      
       dt_store = dt_stack.Pop ();
       messenger.PopState ();
+      top_serial = serial_stack [serial_stack_top];
     }
 
 
@@ -488,7 +486,7 @@
       messenger.NeedMessage = true;
       messenger.InErrorMode = true;
 
-      serial_stack = array (5);
+      serial_stack = array (500);
       last_serial = 1;
       top_serial = 1;
       serial_stack [0] = 1;



More information about the svn mailing list