emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 48ff93ba18c 1/3: Adjust side-effect-free declarations


From: Mattias Engdegård
Subject: master 48ff93ba18c 1/3: Adjust side-effect-free declarations
Date: Sun, 9 Apr 2023 12:24:07 -0400 (EDT)

branch: master
commit 48ff93ba18c8fae6c2904d40906cd0e13158b688
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Adjust side-effect-free declarations
    
    * 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 | 2 +-
 lisp/emacs-lisp/cl-extra.el | 1 +
 lisp/emacs-lisp/cl-lib.el   | 1 +
 lisp/emacs-lisp/cl-macs.el  | 6 +++---
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 70317e2365d..dad3bd694a6 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -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
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index e1c8ebe2559..a89bbc3a748 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -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
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index 95a51a4bdde..7fee780a735 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -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))
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 8dc8b475a7f..41fc3b9f335 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -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.
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]