Function: byte-run--set-compiler-macro

byte-run--set-compiler-macro is a byte-compiled function defined in byte-run.el.gz.

Signature

(byte-run--set-compiler-macro F ARGS COMPILER-FUNCTION)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/byte-run.el.gz
(defalias 'byte-run--set-compiler-macro
  #'(lambda (f args compiler-function)
      (if (not (eq (car-safe compiler-function) 'lambda))
          `(eval-and-compile
             (function-put ',f 'compiler-macro #',compiler-function))
        (let ((cfname (intern (concat (symbol-name f) "--anon-cmacro")))
              ;; Avoid cadr/cddr so we can use `compiler-macro' before
              ;; defining cadr/cddr.
              (data (cdr compiler-function)))
          `(progn
             (eval-and-compile
               (function-put ',f 'compiler-macro #',cfname))
             ;; Don't autoload the compiler-macro itself, since the
             ;; macroexpander will find this file via `f's autoload,
             ;; if needed.
             :autoload-end
             (eval-and-compile
               (defun ,cfname (,@(car data) ,@args)
                 (ignore ,@(delq '&rest (delq '&optional (copy-sequence args))))
                 ,@(cdr data))))))))