]> git.eshelyaron.com Git - emacs.git/commitdiff
Simplify correctly (or (integer 1 1) (not (integer 1 1))) as t
authorAndrea Corallo <akrl@sdf.org>
Fri, 18 Dec 2020 16:22:05 +0000 (17:22 +0100)
committerAndrea Corallo <akrl@sdf.org>
Mon, 21 Dec 2020 19:22:03 +0000 (20:22 +0100)
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1-no-mem): Logic
update.
* test/lisp/emacs-lisp/comp-cstr-tests.el
(comp-cstr-typespec-tests-alist): Add a test.

lisp/emacs-lisp/comp-cstr.el
test/lisp/emacs-lisp/comp-cstr-tests.el

index a1722035963884949b0666f88d3c62b95fdfaa53..22d3958aed3184b8b9753f4bad749c643575d6bb 100644 (file)
@@ -474,12 +474,17 @@ DST is returned."
                     (cl-nset-difference (valset neg) (valset pos)))))
 
             ;; Range propagation
-            (setf (range neg)
-                  (when range
-                    (comp-range-negation
-                     (comp-range-union
-                      (comp-range-negation (range neg))
-                      (range pos)))))
+            (when range
+              ;; Handle apart (or (integer 1 1) (not (integer 1 1)))
+              ;; like cases.
+              (if (and (range pos) (range neg)
+                       (equal (range pos) (range neg)))
+                  (give-up)
+                (setf (range neg)
+                      (comp-range-negation
+                       (comp-range-union
+                        (comp-range-negation (range neg))
+                        (range pos))))))
 
             (if (comp-cstr-empty-p neg)
                 (setf (typeset dst) (typeset pos)
index f7ea00e86f2a5640d39c0d52aa2d86dc6deb6521..b38573ca33ab93f1ac227ebcf38a9fe3e4fb0a55 100644 (file)
     ;; 80
     ((and (or marker number) (integer 0 0)) . (integer 0 0))
     ;; 81
-    ((and t (not t)) . nil))
+    ((and t (not t)) . nil)
+    ;; 82
+    ((or (integer 1 1) (not (integer 1 1))) . t))
   "Alist type specifier -> expected type specifier.")
 
 (defmacro comp-cstr-synthesize-tests ()