diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-12-18 17:22:05 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-12-21 20:22:03 +0100 |
commit | e0f20da6ecd1fceabdce480dd878be293cfba027 (patch) | |
tree | bbfcbeb71319862f1d4e81979342e1aff141ade6 /lisp/emacs-lisp/comp-cstr.el | |
parent | 3540b1f167d63e1a38ec0719f909dcda60c77ad3 (diff) | |
download | emacs-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.el | 17 |
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) |