From d6227f6edcff7be05469e99da4ce541bfc474c3d Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Mon, 22 Feb 2021 13:58:30 +0100 Subject: * 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. --- lisp/emacs-lisp/comp-cstr.el | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lisp/emacs-lisp/comp-cstr.el') 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) -- cgit v1.2.3