Lexical renaming rework (part one and a half)
[clinton/parenscript.git] / src / special-forms.lisp
index d7eeac5..b495fe9 100644 (file)
@@ -591,12 +591,18 @@ lambda-list::=
   `(var ,name ,@(when value-provided? (list value))))
 
 (define-ps-special-form let (bindings &body body)
-  `(js:let ,(mapcar #'car bindings) 
-     ,(ps-compile `(progn
-                    ,@(mapcar (lambda (bind)
-                                `(var ,(car bind) ,(cadr bind)))
-                              bindings)
-                    ,@body))))
+  `(js:let ,(mapcar #'car bindings)
+     ,@(let ((body-forms (if compile-expression?
+                           `((progn
+                                ,@(mapcar (lambda (bind)
+                                            `(var ,(car bind) ,(cadr bind)))
+                                          bindings)
+                                ,@body))
+                           `(,@(mapcar (lambda (bind)
+                                            `(var ,(car bind) ,(cadr bind)))
+                                          bindings)
+                               ,@body))))
+           (mapcar #'ps-compile body-forms))))
 
 (defpsmacro let* (bindings &body body)
   (if bindings