From 99a113921af70dc3e9d74c01bb3004d131feec1d Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Sun, 3 Aug 2008 01:21:22 +0200 Subject: TAGBODY: Revert an ill-advised pseudo-bugfix from before. --- control-flow.lisp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'control-flow.lisp') 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) -- cgit v1.2.3