diff options
author | Matthias Andreas Benkard <matthias@benkard.de> | 2008-08-03 01:21:22 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <matthias@benkard.de> | 2008-08-03 01:21:22 +0200 |
commit | 99a113921af70dc3e9d74c01bb3004d131feec1d (patch) | |
tree | 366bea43777b37341f598af21cc34fbdbbb73090 | |
parent | d9bac74c435f1f5985561c59de12df4b51a7cfe2 (diff) |
TAGBODY: Revert an ill-advised pseudo-bugfix from before.
-rw-r--r-- | control-flow.lisp | 20 |
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) |