summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-18 16:45:54 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-18 16:45:54 +0200
commita054e735eda7cbe151679b1e10a369251c8cf613 (patch)
treed2abc81f22e70d14e2627d8b1d37afaa6de2b403
parent74e946c4e140fbde88b2fdccea1b32534f97e2e0 (diff)
Fix the TAGBODY parser.
-rw-r--r--sb-eval2.lisp13
1 files changed, 8 insertions, 5 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp
index 0d7033e..ad1a709 100644
--- a/sb-eval2.lisp
+++ b/sb-eval2.lisp
@@ -156,12 +156,15 @@
(finishp nil))
(loop until finishp
collect
- (let ((tag next-form)
- (forms (loop until (symbolp (setq next-form (pop forms)))
- collect next-form)))
+ (progn
(unless forms
- (setq finishp t))
- (cons tag forms)))))
+ (setq finishp (null forms)))
+ (let ((tag next-form)
+ (current-forms (loop for current-form = (pop forms)
+ do (setq next-form current-form)
+ until (symbolp current-form)
+ collect current-form)))
+ (cons tag current-forms))))))
(defun context-var-lexical-p (context var)
(context-find-lexical context var))
(defun context-add-env-lexicals (context vars)