summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl.el
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <larsi@gnus.org>2015-01-28 14:21:33 +1100
committerLars Magne Ingebrigtsen <larsi@gnus.org>2015-01-28 14:21:33 +1100
commit7f4f16b3ae6fdb59d83cfc01017668f2a564309f (patch)
tree60e4a7f23f949afaed3bc2fddd0a528aef297861 /lisp/emacs-lisp/cl.el
parent1a369fc7f1ccec6954344ec1ee0211a4d24c312d (diff)
parentbe2d23e58721b7acc68c0ea654a38e5109df2aa2 (diff)
downloademacs-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.el13
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.