aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Corallo2021-02-22 13:58:30 +0100
committerAndrea Corallo2021-02-22 13:59:56 +0100
commitd6227f6edcff7be05469e99da4ce541bfc474c3d (patch)
treefded45fd969f963c21295860dda09c81d09be87c
parentda4da88c76465e30ce974383b182f191553b470a (diff)
downloademacs-d6227f6edcff7be05469e99da4ce541bfc474c3d.tar.gz
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.
-rw-r--r--lisp/emacs-lisp/comp-cstr.el6
-rw-r--r--test/lisp/emacs-lisp/comp-cstr-tests.el4
-rw-r--r--test/src/comp-tests.el2
3 files changed, 10 insertions, 2 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."
597 (valset pos))) 597 (valset pos)))
598 ;; Pos is a superset of neg. 598 ;; Pos is a superset of neg.
599 (give-up)) 599 (give-up))
600 ((cl-some (lambda (x)
601 (cl-some (lambda (y)
602 (comp-subtype-p y x))
603 (mapcar #'type-of (valset pos))))
604 (typeset neg))
605 (give-up))
600 (t 606 (t
601 ;; pos is a subset or eq to neg 607 ;; pos is a subset or eq to neg
602 (setf (valset neg) 608 (setf (valset neg)
diff --git a/test/lisp/emacs-lisp/comp-cstr-tests.el b/test/lisp/emacs-lisp/comp-cstr-tests.el
index b4db54666c7..f2d9bf583e5 100644
--- a/test/lisp/emacs-lisp/comp-cstr-tests.el
+++ b/test/lisp/emacs-lisp/comp-cstr-tests.el
@@ -211,7 +211,9 @@
211 ;; 85 211 ;; 85
212 ((or (not string) t) . t) 212 ((or (not string) t) . t)
213 ;; 86 213 ;; 86
214 ((or (not vector) sequence) . sequence)) 214 ((or (not vector) sequence) . sequence)
215 ;; 87
216 ((or (not symbol) null) . t))
215 "Alist type specifier -> expected type specifier.")) 217 "Alist type specifier -> expected type specifier."))
216 218
217(defmacro comp-cstr-synthesize-tests () 219(defmacro comp-cstr-synthesize-tests ()
diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el
index 08c18894419..f7b5a6bbb4c 100644
--- a/test/src/comp-tests.el
+++ b/test/src/comp-tests.el
@@ -1185,7 +1185,7 @@ Return a list of results."
1185 ((defun comp-tests-ret-type-spec-f (x) 1185 ((defun comp-tests-ret-type-spec-f (x)
1186 (unless (symbolp x) 1186 (unless (symbolp x)
1187 x)) 1187 x))
1188 (not symbol)) 1188 t)
1189 1189
1190 ;; 55 1190 ;; 55
1191 ((defun comp-tests-ret-type-spec-f (x) 1191 ((defun comp-tests-ret-type-spec-f (x)