~ chicken-core (chicken-5) f5c87f894e1a94a7ae8355563b3e374d4480797b


commit f5c87f894e1a94a7ae8355563b3e374d4480797b
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon May 16 20:57:09 2011 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed May 18 04:29:03 2011 -0400

    bootstrap-mode broke potential-value assignment for toplevel assignments, which causes wrong lambda-infos

diff --git a/compiler.scm b/compiler.scm
index e838c399..c695eb9d 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -223,7 +223,7 @@
 ;   undefined -> <boolean>                   If true: variable is unknown yet but can be known later
 ;   value -> <node>                          Variable has a known value
 ;   local-value -> <node>                    Variable is declared local and has value
-;   potential-value -> <node>                Global variable was assigned this value
+;   potential-value -> <node>                Global variable was assigned this value (later turns into 'value)
 ;   references -> (<node> ...)               Nodes that are accesses of this variable (##core#variable nodes)
 ;   boxed -> <boolean>                       If true: variable has to be boxed after closure-conversion
 ;   contractable -> <boolean>                If true: variable names contractable procedure
@@ -1764,18 +1764,8 @@
 		     (walk val env localenv here #f) 
 		     (loop (cdr vars) (cdr vals)) ) ) ) ) )
 
-	  ((lambda)			; why do we have 2 cases for lambda?
-	   (grow 1)			; the reason for this should be tracked down
-	   (decompose-lambda-list	; and this case removed
-	    (first params)
-	    (lambda (vars argc rest)
-	      (for-each 
-	       (lambda (var) (put! db var 'unknown #t))
-	       vars)
-	      (let ([tl toplevel-scope])
-		(set! toplevel-scope #f)
-		(walk (car subs) (append localenv env) vars #f #f)
-		(set! toplevel-scope tl) ) ) ) )
+	  ((lambda)
+	   (bomb "somebody used unprefixed `lambda'!"))
 
 	  ((##core#lambda ##core#direct_lambda)
 	   (grow 1)
@@ -1812,8 +1802,8 @@
 		 ((standard)
 		  (warning "redefinition of standard binding" var) )
 		 ((extended)
-		  (warning "redefinition of extended binding" var) ) )
-	       (put! db var 'potential-value val) )
+		  (warning "redefinition of extended binding" var) ) ))
+	     (put! db var 'potential-value val)
 	     (unless (memq var localenv)
 	       (grow 1)
 	       (cond ((memq var env) 
Trap