Function: elisp-scope-cl-macrolet

elisp-scope-cl-macrolet is a byte-compiled function defined in elisp-scope.el.gz.

Signature

(elisp-scope-cl-macrolet BINDINGS BODY OUTSPEC)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/elisp-scope.el.gz
(defun elisp-scope-cl-macrolet (bindings body outspec)
  (if-let* ((b (car bindings)))
      (let ((name (car b))
            (arglist (cadr b))
            (mbody (cddr b)))
        (elisp-scope-cl-lambda arglist mbody)
        (when-let* ((bare (elisp-scope--sym-bare name)))
          (let ((beg (elisp-scope--sym-pos name)))
            ;; TODO: Use a bespoke 'local-macro-definition' role.
            (when beg (elisp-scope--report 'macro beg bare beg))
            (let ((pos (or beg (cons 'gen (incf elisp-scope--counter)))))
              (elisp-scope-with-local-definition bare
                  (lambda (f &rest _)
                    (when (symbol-with-pos-p f)
                      (elisp-scope--report 'macro (symbol-with-pos-pos f) bare pos)))
                (elisp-scope-cl-macrolet (cdr bindings) body outspec))))))
    (elisp-scope-n body outspec)))