1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Declare caar, cadr, etc. as side-effect-free

* lisp/subr.el (caar, cadr, cdar, cddr, caaar, caadr, cadar, caddr)
(cdaar, cdadr, cddar, cdddr, caaaar, caaadr, caadar, caaddr, cadaar)
(cadadr, caddar, cadddr, cdaaar, cdaadr, cdadar, cdaddr, cddaar)
(cddadr, cdddar, cddddr): Declare side-effect-free.
* lisp/emacs-lisp/cl-macs.el: Remove redundant declarations of
compatibility aliases for the above functions as side-effect-free.
This commit is contained in:
Stefan Kangas 2025-02-12 18:05:11 +01:00
parent 31381f982d
commit f478d2d1b9
2 changed files with 57 additions and 37 deletions

View file

@ -3731,15 +3731,7 @@ macro that returns its `&whole' argument."
(dolist (y '(cl-first cl-second cl-third cl-fourth
cl-fifth cl-sixth cl-seventh
cl-eighth cl-ninth cl-tenth
cl-rest cl-endp cl-plusp cl-minusp
cl-caaar cl-caadr cl-cadar
cl-caddr cl-cdaar cl-cdadr
cl-cddar cl-cdddr cl-caaaar
cl-caaadr cl-caadar cl-caaddr
cl-cadaar cl-cadadr cl-caddar
cl-cadddr cl-cdaaar cl-cdaadr
cl-cdadar cl-cdaddr cl-cddaar
cl-cddadr cl-cdddar cl-cddddr))
cl-rest cl-endp cl-plusp cl-minusp))
(put y 'side-effect-free t))
;;; Things that are inline.

View file

@ -609,142 +609,170 @@ treatment of negative COUNT provided by this function."
(defun caar (x)
"Return the car of the car of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car x)))
(defun cadr (x)
"Return the car of the cdr of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr x)))
(defun cdar (x)
"Return the cdr of the car of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car x)))
(defun cddr (x)
"Return the cdr of the cdr of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr x)))
(defun caaar (x)
"Return the `car' of the `car' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car (car x))))
(defun caadr (x)
"Return the `car' of the `car' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car (cdr x))))
(defun cadar (x)
"Return the `car' of the `cdr' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr (car x))))
(defun caddr (x)
"Return the `car' of the `cdr' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr (cdr x))))
(defun cdaar (x)
"Return the `cdr' of the `car' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car (car x))))
(defun cdadr (x)
"Return the `cdr' of the `car' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car (cdr x))))
(defun cddar (x)
"Return the `cdr' of the `cdr' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr (car x))))
(defun cdddr (x)
"Return the `cdr' of the `cdr' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr (cdr x))))
(defun caaaar (x)
"Return the `car' of the `car' of the `car' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car (car (car x)))))
(defun caaadr (x)
"Return the `car' of the `car' of the `car' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car (car (cdr x)))))
(defun caadar (x)
"Return the `car' of the `car' of the `cdr' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car (cdr (car x)))))
(defun caaddr (x)
"Return the `car' of the `car' of the `cdr' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (car (cdr (cdr x)))))
(defun cadaar (x)
"Return the `car' of the `cdr' of the `car' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr (car (car x)))))
(defun cadadr (x)
"Return the `car' of the `cdr' of the `car' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr (car (cdr x)))))
(defun caddar (x)
"Return the `car' of the `cdr' of the `cdr' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr (cdr (car x)))))
(defun cadddr (x)
"Return the `car' of the `cdr' of the `cdr' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(car (cdr (cdr (cdr x)))))
(defun cdaaar (x)
"Return the `cdr' of the `car' of the `car' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car (car (car x)))))
(defun cdaadr (x)
"Return the `cdr' of the `car' of the `car' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car (car (cdr x)))))
(defun cdadar (x)
"Return the `cdr' of the `car' of the `cdr' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car (cdr (car x)))))
(defun cdaddr (x)
"Return the `cdr' of the `car' of the `cdr' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (car (cdr (cdr x)))))
(defun cddaar (x)
"Return the `cdr' of the `cdr' of the `car' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr (car (car x)))))
(defun cddadr (x)
"Return the `cdr' of the `cdr' of the `car' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr (car (cdr x)))))
(defun cdddar (x)
"Return the `cdr' of the `cdr' of the `cdr' of the `car' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr (cdr (car x)))))
(defun cddddr (x)
"Return the `cdr' of the `cdr' of the `cdr' of the `cdr' of X."
(declare (compiler-macro internal--compiler-macro-cXXr))
(declare (side-effect-free t)
(compiler-macro internal--compiler-macro-cXXr))
(cdr (cdr (cdr (cdr x)))))
(defun last (list &optional n)