diff options
author | Kenichi Handa <handa@gnu.org> | 2012-11-23 23:36:24 +0900 |
---|---|---|
committer | Kenichi Handa <handa@gnu.org> | 2012-11-23 23:36:24 +0900 |
commit | 2aaec2d9be5cec44ea3b59cba476fd3e091f2fc9 (patch) | |
tree | 3711b97807201b7eeaa066003b1c3a4ce929e5bb /lisp/emacs-lisp/byte-run.el | |
parent | e1d276cbf9e18f13101328f56bed1a1c0a66e63a (diff) | |
parent | e7d0e5ee247a155a268ffbf80bedbe25e15b5032 (diff) | |
download | emacs-2aaec2d9be5cec44ea3b59cba476fd3e091f2fc9.tar.gz emacs-2aaec2d9be5cec44ea3b59cba476fd3e091f2fc9.tar.bz2 emacs-2aaec2d9be5cec44ea3b59cba476fd3e091f2fc9.zip |
Diffstat (limited to 'lisp/emacs-lisp/byte-run.el')
-rw-r--r-- | lisp/emacs-lisp/byte-run.el | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el index 462b4a25154..b4582a41d6c 100644 --- a/lisp/emacs-lisp/byte-run.el +++ b/lisp/emacs-lisp/byte-run.el @@ -81,8 +81,14 @@ The return value of this function is not used." #'(lambda (f _args new-name when) `(make-obsolete ',f ',new-name ,when))) (list 'compiler-macro - #'(lambda (f _args compiler-function) - `(put ',f 'compiler-macro #',compiler-function))) + #'(lambda (f args compiler-function) + ;; FIXME: Make it possible to just reuse `args'. + `(eval-and-compile + (put ',f 'compiler-macro + ,(if (eq (car-safe compiler-function) 'lambda) + `(lambda ,(append (cadr compiler-function) args) + ,@(cddr compiler-function)) + `#',compiler-function))))) (list 'doc-string #'(lambda (f _args pos) (list 'put (list 'quote f) ''doc-string-elt (list 'quote pos)))) |