Function: cl-compiler-macroexpand
cl-compiler-macroexpand is an autoloaded and byte-compiled function
defined in cl-macs.el.gz.
Signature
(cl-compiler-macroexpand FORM)
Documentation
Like macroexpand, but for compiler macros.
Expands FORM repeatedly until no further expansion is possible.
Returns FORM unchanged if it has no compiler macro, or if it has a
macro that returns its &whole argument.
Aliases
compiler-macroexpand (obsolete since 27.1)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/cl-macs.el.gz
;;;###autoload
(defun cl-compiler-macroexpand (form)
"Like `macroexpand', but for compiler macros.
Expands FORM repeatedly until no further expansion is possible.
Returns FORM unchanged if it has no compiler macro, or if it has a
macro that returns its `&whole' argument."
(while
(let ((func (car-safe form)) (handler nil))
(while (and (symbolp func)
(not (setq handler (get func 'compiler-macro)))
(fboundp func)
(or (not (autoloadp (symbol-function func)))
(autoload-do-load (symbol-function func) func)))
(setq func (symbol-function func)))
(and handler
(not (eq form (setq form (apply handler form (cdr form))))))))
form)