summaryrefslogtreecommitdiff
path: root/control-flow.lisp
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-08-03 01:21:22 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-08-03 01:21:22 +0200
commit99a113921af70dc3e9d74c01bb3004d131feec1d (patch)
tree366bea43777b37341f598af21cc34fbdbbb73090 /control-flow.lisp
parentd9bac74c435f1f5985561c59de12df4b51a7cfe2 (diff)
TAGBODY: Revert an ill-advised pseudo-bugfix from before.
Diffstat (limited to 'control-flow.lisp')
-rw-r--r--control-flow.lisp20
1 files changed, 13 insertions, 7 deletions
diff --git a/control-flow.lisp b/control-flow.lisp
index 0ffb306..a4503ab 100644
--- a/control-flow.lisp
+++ b/control-flow.lisp
@@ -114,13 +114,19 @@
(setq current-label clause
current-function (gensym "TAGBODY-SECTION"))
(prog1
- (when old-function
- `((,old-function ()
- ,@(nreverse accumulated-clauses)
- #',current-function)
- ,@(when (endp rest)
- `((,current-function ()
- ',end-marker)))))
+ `((,old-function ()
+ ;; Yes, we generate this even when
+ ;; OLD-FUNCTION is NIL. In this
+ ;; case, though, the LABELS form
+ ;; never sees the definition. Grep
+ ;; for (cddr (first sections)) below
+ ;; in order to see how we make use of
+ ;; the generated lambda form instead.
+ ,@(nreverse accumulated-clauses)
+ #',current-function)
+ ,@(when (endp rest)
+ `((,current-function ()
+ ',end-marker))))
(setq accumulated-clauses nil))))
(t (pushq clause accumulated-clauses)
(if (endp rest)