~ chicken-core (chicken-5) 4722762d1388325de22d4e9a4f3d6bcc8b7094f7


commit 4722762d1388325de22d4e9a4f3d6bcc8b7094f7
Author:     felix <bunny351@gmail.com>
AuthorDate: Thu Apr 22 16:52:13 2010 +0200
Commit:     felix <bunny351@gmail.com>
CommitDate: Thu Apr 22 16:52:13 2010 +0200

    added ##core#toplevel-begin which works like ##core#begin, but isn't spliced by body-canonicalization

diff --git a/compiler.scm b/compiler.scm
index 763f2147..e521d70d 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -109,6 +109,7 @@
 ; (##core#lambda ({<variable>}+ [. <variable>]) <body>)
 ; (##core#set! <variable> <exp>)
 ; (##core#begin <exp> ...)
+; (##core#toplevel-begin <exp> ...)
 ; (##core#include <string>)
 ; (##core#loop-lambda <llist> <body>)
 ; (##core#undefined)
@@ -957,7 +958,7 @@
 			 (eval/meta (cadr x))
 			 '(##core#undefined) )
 
-			((##core#begin) 
+			((##core#begin ##core#toplevel-begin) 
 			 (if (pair? (cdr x))
 			     (canonicalize-begin-body
 			      (let fold ([xs (cdr x)])
diff --git a/eval.scm b/eval.scm
index 54eb945c..8d135070 100644
--- a/eval.scm
+++ b/eval.scm
@@ -387,7 +387,7 @@
 					  (compile '(##core#undefined) e #f tf cntr se) ) ] )
 			    (lambda (v) (if (##core#app test v) (##core#app cns v) (##core#app alt v))) ) ]
 
-			 [(##core#begin)
+			 [(##core#begin ##core#toplevel-begin)
 			  (let* ((body (##sys#slot x 1))
 				 (len (length body)) )
 			    (case len
Trap