]> git.eshelyaron.com Git - emacs.git/commitdiff
Have `comp-cstr-intersection-no-mem' intersect pos neg value sets
authorAndrea Corallo <akrl@sdf.org>
Tue, 27 Apr 2021 20:43:12 +0000 (22:43 +0200)
committerAndrea Corallo <akrl@sdf.org>
Tue, 27 Apr 2021 20:58:41 +0000 (22:58 +0200)
* 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.

lisp/emacs-lisp/comp-cstr.el
test/lisp/emacs-lisp/comp-cstr-tests.el

index 2a50ceb194ff49f8cee548bf8b24701008dff574..73b78a3672d5e41873f8de1904d4602545a9b41a 100644 (file)
@@ -790,7 +790,9 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
 
             (setf (range pos)
                   (comp-range-intersection (range pos)
-                                           (comp-range-negation (range neg))))
+                                           (comp-range-negation (range neg)))
+                  (valset pos)
+                  (cl-set-difference (valset pos) (valset neg)))
 
             ;; Return a non negated form.
             (setf (typeset dst) (typeset pos)
index 2e4628522f48914d9cd832560f8e23194b442cb0..59e1b6982e1ed33a98ca15fcafc089ea14721816 100644 (file)
       ((and (or symbol string) (or number marker)) . nil)
       ;; 78
       ((and t t) . t)
-      ;; 80
+      ;; 79
       ((and (or marker number) (integer 0 0)) . (integer 0 0))
-      ;; 81
+      ;; 80
       ((and t (not t)) . nil)
-      ;; 82
+      ;; 81
       ((or (integer 1 1) (not (integer 1 1))) . t)
-      ;; 83
+      ;; 82
       ((not t) . nil)
-      ;; 84
+      ;; 83
       ((not nil) . t)
-      ;; 85
+      ;; 84
       ((or (not string) t) . t)
-      ;; 86
+      ;; 85
       ((or (not vector) sequence) . sequence)
+      ;; 86
+      ((or (not symbol) null) . t)
       ;; 87
-      ((or (not symbol) null) . t))
+      ((and (or null integer) (not (or null integer))) . nil)
+      ;; 88
+      ((and (or (member a b c)) (not (or (member a b)))) . (member c)))
     "Alist type specifier -> expected type specifier."))
 
 (defmacro comp-cstr-synthesize-tests ()