summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/comp-cstr.el
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-12-18 17:22:05 +0100
committerAndrea Corallo <akrl@sdf.org>2020-12-21 20:22:03 +0100
commite0f20da6ecd1fceabdce480dd878be293cfba027 (patch)
treebbfcbeb71319862f1d4e81979342e1aff141ade6 /lisp/emacs-lisp/comp-cstr.el
parent3540b1f167d63e1a38ec0719f909dcda60c77ad3 (diff)
downloademacs-e0f20da6ecd1fceabdce480dd878be293cfba027.tar.gz
emacs-e0f20da6ecd1fceabdce480dd878be293cfba027.tar.bz2
emacs-e0f20da6ecd1fceabdce480dd878be293cfba027.zip
Simplify correctly (or (integer 1 1) (not (integer 1 1))) as t
* 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.
Diffstat (limited to 'lisp/emacs-lisp/comp-cstr.el')
-rw-r--r--lisp/emacs-lisp/comp-cstr.el17
1 files changed, 11 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el
index a1722035963..22d3958aed3 100644
--- a/lisp/emacs-lisp/comp-cstr.el
+++ b/lisp/emacs-lisp/comp-cstr.el
@@ -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)