summaryrefslogtreecommitdiff
path: root/sb-eval2.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'sb-eval2.lisp')
-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)