diff options
author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2015-01-28 14:21:33 +1100 |
---|---|---|
committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2015-01-28 14:21:33 +1100 |
commit | 7f4f16b3ae6fdb59d83cfc01017668f2a564309f (patch) | |
tree | 60e4a7f23f949afaed3bc2fddd0a528aef297861 /lisp/emacs-lisp/cl.el | |
parent | 1a369fc7f1ccec6954344ec1ee0211a4d24c312d (diff) | |
parent | be2d23e58721b7acc68c0ea654a38e5109df2aa2 (diff) | |
download | emacs-7f4f16b3ae6fdb59d83cfc01017668f2a564309f.tar.gz |
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Diffstat (limited to 'lisp/emacs-lisp/cl.el')
-rw-r--r-- | lisp/emacs-lisp/cl.el | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index da3eab73fc4..1b204631fb8 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -342,6 +342,8 @@ The two cases that are handled are: - renaming of F when it's a function defined via `cl-labels' or `labels'." (require 'cl-macs) (declare-function cl--expr-contains-any "cl-macs" (x y)) + (declare-function cl--labels-convert "cl-macs" (f)) + (defvar cl--labels-convert-cache) (cond ;; ¡¡Big Ugly Hack!! We can't use a compiler-macro because those are checked ;; *after* handling `function', but we want to stop macroexpansion from @@ -374,13 +376,10 @@ The two cases that are handled are: (setq cl--function-convert-cache (cons newf res)) res)))) (t - (let ((found (assq f macroexpand-all-environment))) - (if (and found (ignore-errors - (eq (cadr (cl-caddr found)) 'cl-labels-args))) - (cadr (cl-caddr (cl-cadddr found))) - (let ((res `(function ,f))) - (setq cl--function-convert-cache (cons f res)) - res)))))) + (setq cl--labels-convert-cache cl--function-convert-cache) + (prog1 + (cl--labels-convert f) + (setq cl--function-convert-cache cl--labels-convert-cache))))) (defmacro lexical-let (bindings &rest body) "Like `let', but lexically scoped. |