fix LET* environment semantics in sexp-based evaluator
[sbcl.git] / tests / full-eval.impure.lisp
index b2eb21a..54a9151 100644 (file)
     (let ((sb-ext:*evaluator-mode* :compile))
       (load *file*))))
 (delete-file *file*)
+
+(defvar *stash*)
+(defun save-it (f) (setq *stash* f) 'whatever)
+(with-test (:name (let* :nested-environments))
+  (let ((z 'zee) (y 'y) (x 92))
+    (let* ((baz (save-it (lambda (what) (assert (equal (list what x y z)
+                                                       (list what 92 'y 'zee))))))
+           (mum (funcall *stash* :after-binding-baz))
+           (y 'new-y)
+           (z (progn (funcall *stash* :after-binding-y) 'new-z))
+           (x (progn (funcall *stash* :after-binding-z) 'new-x)))
+      (funcall *stash* :in-body)
+      (values))))