]> git.eshelyaron.com Git - emacs.git/commitdiff
* Redefine `comp-cstr-shallow-copy'
authorAndrea Corallo <akrl@sdf.org>
Wed, 1 Dec 2021 13:39:33 +0000 (14:39 +0100)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Dec 2021 21:21:04 +0000 (22:21 +0100)
* lisp/emacs-lisp/comp-cstr.el (comp-cstr): Don't synthesize copier
function.
(comp-cstr-shallow-copy): New function.
(comp-cstr-=): Use `copy-sequence'.

lisp/emacs-lisp/comp-cstr.el

index 5518cdb4c9066acf1a5ae444bf579a0e5c27fb52..7f0af2aaee5bf01eb8368a5c7c8a6c7c6bf80fb2 100644 (file)
@@ -70,7 +70,7 @@
                                        (irange &aux
                                                (range (list irange))
                                                (typeset ())))
-                         (:copier comp-cstr-shallow-copy))
+                         (:copier nil))
   "Internal representation of a type/value constraint."
   (typeset '(t) :type list
            :documentation "List of possible types the mvar can assume.
@@ -133,6 +133,14 @@ Integer values are handled in the `range' slot.")
                     :range (copy-tree (range cstr))
                     :neg (neg cstr))))
 
+(defsubst comp-cstr-shallow-copy (dst src)
+  "Copy the content of SRC into DST."
+  (with-comp-cstr-accessors
+    (setf (range dst) (range src)
+          (valset dst) (valset src)
+          (typeset dst) (typeset src)
+          (neg dst) (neg src))))
+
 (defsubst comp-cstr-empty-p (cstr)
   "Return t if CSTR is equivalent to the nil type specifier or nil otherwise."
   (with-comp-cstr-accessors
@@ -883,7 +891,7 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
   "Constraint OP1 being = OP2 setting the result into DST."
   (with-comp-cstr-accessors
     (cl-flet ((relax-cstr (cstr)
-                (setf cstr (comp-cstr-shallow-copy cstr))
+                (setf cstr (copy-sequence cstr))
                 ;; If can be any float extend it to all integers.
                 (when (memq 'float (typeset cstr))
                   (setf (range cstr) '((- . +))))