Function: byte-compile-define-symbol-prop

byte-compile-define-symbol-prop is a byte-compiled function defined in bytecomp.el.gz.

Signature

(byte-compile-define-symbol-prop FORM)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/bytecomp.el.gz
(defun byte-compile-define-symbol-prop (form)
  (pcase form
    ((and `(,op ,fun ,prop ,val)
          (guard (and (macroexp-const-p fun)
                      (macroexp-const-p prop)
                      (or (macroexp-const-p val)
                          ;; Also accept anonymous functions, since
                          ;; we're at top-level which implies they're
                          ;; also constants.
                          (pcase val (`(function (lambda . ,_)) t))))))
     (byte-compile-push-constant op)
     (byte-compile-form fun)
     (byte-compile-form prop)
     (let* ((fun (eval fun t))
            (prop (eval prop t))
            (val (if (macroexp-const-p val)
                     (eval val t)
                   (byte-compile-lambda (cadr val)))))
       (push `(,fun
               . (,prop ,val ,@(alist-get fun overriding-plist-environment)))
             overriding-plist-environment)
       (byte-compile-push-constant val)
       (byte-compile-out 'byte-call 3)
       nil))

    (_ (byte-compile-keep-pending form))))