dolist is a macro defined in subr.el.gz.

Signature
(dolist (VAR LIST [RESULT]) BODY...)

Documentation
Loop over a list.

Evaluate BODY with VAR bound to each car from LIST, in turn.
Then evaluate RESULT to get return value, default nil.

This macro has :around advice: cl--wrap-in-nil-block.

View in manual

References
References in subr.el.gz:
(defun map-keymap-sorted ...)                1 reference
(defun keymap-canonicalize ...)              2 references
(defun run-mode-hooks ...)                   2 references
(defun major-mode-restore ...)               2 references
(defun read-char-from-minibuffer ...)        1 reference
(defvar y-or-n-p-map ...)                    3 references
(defun activate-change-group ...)            1 reference
(defun accept-change-group ...)              1 reference
(defun cancel-change-group ...)              1 reference
(defun remove-overlays ...)                  1 reference
(defun remove-yank-excluded-properties ...)  1 reference
(defun do-after-load-evaluation ...)         1 reference
(defun display-delayed-warnings ...)         1 reference
(defun text-clone--maintain ...)             1 reference
(defmacro dolist-with-progress-reporter ...) 1 reference
(defun register-definition-prefixes ...)     1 reference
(defun buffer-match-p ...)                   1 reference
(defun match-buffers ...)                    1 reference

Find all references Functions used by dolist

Advice
This macro is advised.

Debugging
Enable edebug Enable tracing
Disassemble Forget

Source Code
;; Defined in /usr/share/emacs/29.3/lisp/subr.el.gz
(defmacro dolist (spec &rest body)
  "Loop over a list.
Evaluate BODY with VAR bound to each car from LIST, in turn.
Then evaluate RESULT to get return value, default nil.

\(fn (VAR LIST [RESULT]) BODY...)"
  (declare (indent 1) (debug ((symbolp form &optional form) body)))
  (unless (consp spec)
    (signal 'wrong-type-argument (list 'consp spec)))
  (unless (<= 2 (length spec) 3)
    (signal 'wrong-number-of-arguments (list '(2 . 3) (length spec))))
  (let ((tail (make-symbol "tail")))
    `(let ((,tail ,(nth 1 spec)))
       (while ,tail
         (let ((,(car spec) (car ,tail)))
           ,@body
           (setq ,tail (cdr ,tail))))
       ,@(cdr (cdr spec)))))

Symbol Properties
defalias-fset-function
  #[128 "\304\300\301#\207"
        [advice--defalias-fset nil :around nil apply]
        5 advice]
  Disassemble
edebug-form-spec
  ((symbolp form &optional form)
   body)
function-documentation
  (advice--make-docstring 'dolist)
lisp-indent-function
  1