]> git.eshelyaron.com Git - emacs.git/commitdiff
Adjust side-effect-free declarations
authorMattias Engdegård <mattiase@acm.org>
Sun, 9 Apr 2023 11:54:17 +0000 (13:54 +0200)
committerMattias Engdegård <mattiase@acm.org>
Sun, 9 Apr 2023 14:45:40 +0000 (16:45 +0200)
* lisp/emacs-lisp/byte-opt.el (side-effect-and-error-free-fns):
Add `eql` here.
* lisp/emacs-lisp/cl-macs.el (eql, cl-subst, cl-sublis):
Don't set the `side-effect-free` property here.
`cl-subst` and `cl-sublis` are not side-effect-free.
* lisp/emacs-lisp/cl-extra.el (cl-revappend):
Declare side-effect-free.
* lisp/emacs-lisp/cl-lib.el (cl-copy-list):
Declare side-effect-free and error-free.

lisp/emacs-lisp/byte-opt.el
lisp/emacs-lisp/cl-extra.el
lisp/emacs-lisp/cl-lib.el
lisp/emacs-lisp/cl-macs.el

index 70317e2365dac7554a4ea238f38706ba791f2c5d..dad3bd694a6ec25bc6131d6ef794aba53ff3703f 100644 (file)
@@ -1706,7 +1706,7 @@ See Info node `(elisp) Integer Basics'."
         charsetp commandp cons consp
         current-buffer current-global-map current-indentation
         current-local-map current-minor-mode-maps current-time
-        eobp eolp eq equal
+        eobp eolp eq equal eql
         floatp following-char framep
         hash-table-p
         identity indirect-function integerp integer-or-marker-p
index e1c8ebe2559a1f73a9dea7e3e64e3c6f6c1fc83f..a89bbc3a74856cbeac4f6550cb7a5872a9870039 100644 (file)
@@ -567,6 +567,7 @@ too large if positive or too small if negative)."
 ;;;###autoload
 (defun cl-revappend (x y)
   "Equivalent to (append (reverse X) Y)."
+  (declare (side-effect-free t))
   (nconc (reverse x) y))
 
 ;;;###autoload
index 95a51a4bdde59b1149f712c807c9775f38aef7da..7fee780a735eb21685eeaffec45180e9ff260756 100644 (file)
@@ -459,6 +459,7 @@ Thus, `(cl-list* A B C D)' is equivalent to `(nconc (list A B C) D)', or to
 (defun cl-copy-list (list)
   "Return a copy of LIST, which may be a dotted list.
 The elements of LIST are not copied, just the list structure itself."
+  (declare (side-effect-free error-free))
   (if (consp list)
       (let ((res nil))
        (while (consp list) (push (pop list) res))
index 8dc8b475a7fa3814cf16d06a23d42a28e53ee370..41fc3b9f335e2b24821e770eef59fb84be273b2d 100644 (file)
@@ -3690,14 +3690,14 @@ macro that returns its `&whole' argument."
 
 ;;; Things that are side-effect-free.
 (mapc (lambda (x) (function-put x 'side-effect-free t))
-      '(cl-oddp cl-evenp cl-signum last butlast cl-ldiff cl-pairlis cl-gcd
+      '(cl-oddp cl-evenp cl-signum cl-ldiff cl-pairlis cl-gcd
         cl-lcm cl-isqrt cl-floor cl-ceiling cl-truncate cl-round cl-mod cl-rem
         cl-subseq cl-list-length cl-get cl-getf))
 
 ;;; Things that are side-effect-and-error-free.
 (mapc (lambda (x) (function-put x 'side-effect-free 'error-free))
-      '(eql cl-list* cl-subst cl-acons cl-equalp
-        cl-random-state-p copy-tree cl-sublis))
+      '(cl-list* cl-acons cl-equalp
+        cl-random-state-p copy-tree))
 
 ;;; Types and assertions.