summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-11 15:29:50 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-11 15:29:50 +0200
commit2b1cd52fd85ebea924717a8d758288577970237a (patch)
treee670f6997d70d0685ee66201500b196cbe255af8
parentd638f4ca0259ac32f76c8295407666caec5df689 (diff)
Fix LET*.
-rw-r--r--sb-eval2.lisp10
1 files changed, 7 insertions, 3 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp
index 371a51b..763b3fc 100644
--- a/sb-eval2.lisp
+++ b/sb-eval2.lisp
@@ -32,9 +32,13 @@
(defun make-null-context ()
(%make-context :block-tags nil))
(defun make-context (parent-context)
- (with-slots (block-tags)
+ (with-slots (block-tags go-tags symbol-macros macros lexicals)
parent-context
- (%make-context :block-tags block-tags)))
+ (%make-context :block-tags block-tags
+ :go-tags go-tags
+ :symbol-macros symbol-macros
+ :macros macros
+ :lexicals lexicals)))
(defun context-add-block-tag (context block tag)
(let ((new-context (make-context context)))
(with-slots (block-tags)
@@ -274,7 +278,7 @@
(more (prepare-let* rest-bindings new-context)))
(lambda (env)
(let ((new-env (make-environment env)))
- (push `(,var . ,val) (environment-variables new-env))
+ (push `(,var . ,(funcall val env)) (environment-variables new-env))
(funcall more new-env))))))))
(prepare-let* bindings context))))
((locally)