* 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.
(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)
;; 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 ()