summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl-macs.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2014-11-09 00:14:25 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2014-11-09 00:14:25 -0500
commit57db3f3adc251b628c5aea7e513a66f9305fdd4b (patch)
tree01d3492c1fa689324330151d57ed06da9faca6c3 /lisp/emacs-lisp/cl-macs.el
parentf86269414156e4d91458f2c70a0f022b92caa6ba (diff)
downloademacs-57db3f3adc251b628c5aea7e513a66f9305fdd4b.tar.gz
emacs-57db3f3adc251b628c5aea7e513a66f9305fdd4b.tar.bz2
emacs-57db3f3adc251b628c5aea7e513a66f9305fdd4b.zip
Fix bootstrap failure after last change to eval-and-compile.
* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment): Don't call byte-compile-preprocess since the result will go through cconv. (byte-compile-output-docform): Handle uninterned `name' correctly. * lisp/emacs-lisp/cl-macs.el (cl-define-compiler-macro): Use interned name to circumvent byte-compiler bug. * lisp/emacs-lisp/cl-extra.el (cl-get): Silence compiler warning. * lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Fix typo. (macroexp--compiler-macro): Remove left-over debug code.
Diffstat (limited to 'lisp/emacs-lisp/cl-macs.el')
-rw-r--r--lisp/emacs-lisp/cl-macs.el7
1 files changed, 6 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index e76c0a411b7..c90cc040f84 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2767,7 +2767,12 @@ and then returning foo."
(let ((p args) (res nil))
(while (consp p) (push (pop p) res))
(setq args (nconc (nreverse res) (and p (list '&rest p)))))
- (let ((fname (make-symbol (concat (symbol-name func) "--cmacro"))))
+ ;; FIXME: The code in bytecomp mishandles top-level expressions that define
+ ;; uninterned functions. E.g. it would generate code like:
+ ;; (defalias '#1=#:foo--cmacro #[514 ...])
+ ;; (put 'foo 'compiler-macro '#:foo--cmacro)
+ ;; So we circumvent this by using an interned name.
+ (let ((fname (intern (concat (symbol-name func) "--cmacro"))))
`(eval-and-compile
;; Name the compiler-macro function, so that `symbol-file' can find it.
(cl-defun ,fname ,(if (memq '&whole args) (delq '&whole args)