summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/comp-cstr.el
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2021-02-22 13:58:30 +0100
committerAndrea Corallo <akrl@sdf.org>2021-02-22 13:59:56 +0100
commitd6227f6edcff7be05469e99da4ce541bfc474c3d (patch)
treefded45fd969f963c21295860dda09c81d09be87c /lisp/emacs-lisp/comp-cstr.el
parentda4da88c76465e30ce974383b182f191553b470a (diff)
downloademacs-d6227f6edcff7be05469e99da4ce541bfc474c3d.tar.gz
emacs-d6227f6edcff7be05469e99da4ce541bfc474c3d.tar.bz2
emacs-d6227f6edcff7be05469e99da4ce541bfc474c3d.zip
* Fix union constraint for mixed pos/neg constraints
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1-no-mem): Fix neg type shadowing pos values. * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist): Add testcase. * test/src/comp-tests.el (comp-tests-type-spec-tests): Fix testcase.
Diffstat (limited to 'lisp/emacs-lisp/comp-cstr.el')
-rw-r--r--lisp/emacs-lisp/comp-cstr.el6
1 files changed, 6 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el
index 3c00b68d0f6..c294c53b6b0 100644
--- a/lisp/emacs-lisp/comp-cstr.el
+++ b/lisp/emacs-lisp/comp-cstr.el
@@ -597,6 +597,12 @@ DST is returned."
(valset pos)))
;; Pos is a superset of neg.
(give-up))
+ ((cl-some (lambda (x)
+ (cl-some (lambda (y)
+ (comp-subtype-p y x))
+ (mapcar #'type-of (valset pos))))
+ (typeset neg))
+ (give-up))
(t
;; pos is a subset or eq to neg
(setf (valset neg)