aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Corallo2021-04-27 22:43:12 +0200
committerAndrea Corallo2021-04-27 22:58:41 +0200
commit4e1e0b9decfa2c8cb90b91d619ca078412513ba5 (patch)
treed735b589caae25ba342163604c3eef556d3d4798
parent2ab8d1ee3bd14a388ba3c3391257c337ad39c719 (diff)
downloademacs-4e1e0b9decfa2c8cb90b91d619ca078412513ba5.tar.gz
emacs-4e1e0b9decfa2c8cb90b91d619ca078412513ba5.zip
Have `comp-cstr-intersection-no-mem' intersect pos neg value sets
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-intersection-no-mem): intersect pos and neg value sets * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist): Add two tests and fix some test number.
-rw-r--r--lisp/emacs-lisp/comp-cstr.el4
-rw-r--r--test/lisp/emacs-lisp/comp-cstr-tests.el20
2 files changed, 15 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el
index 2a50ceb194f..73b78a3672d 100644
--- a/lisp/emacs-lisp/comp-cstr.el
+++ b/lisp/emacs-lisp/comp-cstr.el
@@ -790,7 +790,9 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
790 790
791 (setf (range pos) 791 (setf (range pos)
792 (comp-range-intersection (range pos) 792 (comp-range-intersection (range pos)
793 (comp-range-negation (range neg)))) 793 (comp-range-negation (range neg)))
794 (valset pos)
795 (cl-set-difference (valset pos) (valset neg)))
794 796
795 ;; Return a non negated form. 797 ;; Return a non negated form.
796 (setf (typeset dst) (typeset pos) 798 (setf (typeset dst) (typeset pos)
diff --git a/test/lisp/emacs-lisp/comp-cstr-tests.el b/test/lisp/emacs-lisp/comp-cstr-tests.el
index 2e4628522f4..59e1b6982e1 100644
--- a/test/lisp/emacs-lisp/comp-cstr-tests.el
+++ b/test/lisp/emacs-lisp/comp-cstr-tests.el
@@ -198,22 +198,26 @@
198 ((and (or symbol string) (or number marker)) . nil) 198 ((and (or symbol string) (or number marker)) . nil)
199 ;; 78 199 ;; 78
200 ((and t t) . t) 200 ((and t t) . t)
201 ;; 80 201 ;; 79
202 ((and (or marker number) (integer 0 0)) . (integer 0 0)) 202 ((and (or marker number) (integer 0 0)) . (integer 0 0))
203 ;; 81 203 ;; 80
204 ((and t (not t)) . nil) 204 ((and t (not t)) . nil)
205 ;; 82 205 ;; 81
206 ((or (integer 1 1) (not (integer 1 1))) . t) 206 ((or (integer 1 1) (not (integer 1 1))) . t)
207 ;; 83 207 ;; 82
208 ((not t) . nil) 208 ((not t) . nil)
209 ;; 84 209 ;; 83
210 ((not nil) . t) 210 ((not nil) . t)
211 ;; 85 211 ;; 84
212 ((or (not string) t) . t) 212 ((or (not string) t) . t)
213 ;; 86 213 ;; 85
214 ((or (not vector) sequence) . sequence) 214 ((or (not vector) sequence) . sequence)
215 ;; 86
216 ((or (not symbol) null) . t)
215 ;; 87 217 ;; 87
216 ((or (not symbol) null) . t)) 218 ((and (or null integer) (not (or null integer))) . nil)
219 ;; 88
220 ((and (or (member a b c)) (not (or (member a b)))) . (member c)))
217 "Alist type specifier -> expected type specifier.")) 221 "Alist type specifier -> expected type specifier."))
218 222
219(defmacro comp-cstr-synthesize-tests () 223(defmacro comp-cstr-synthesize-tests ()