diff options
| author | Andrea Corallo | 2021-04-27 22:43:12 +0200 |
|---|---|---|
| committer | Andrea Corallo | 2021-04-27 22:58:41 +0200 |
| commit | 4e1e0b9decfa2c8cb90b91d619ca078412513ba5 (patch) | |
| tree | d735b589caae25ba342163604c3eef556d3d4798 | |
| parent | 2ab8d1ee3bd14a388ba3c3391257c337ad39c719 (diff) | |
| download | emacs-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.el | 4 | ||||
| -rw-r--r-- | test/lisp/emacs-lisp/comp-cstr-tests.el | 20 |
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 () |