diff options
| author | Stefan Monnier | 2024-01-18 14:00:15 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2024-01-18 14:00:54 -0500 |
| commit | b07a86abb6d5bb3d5cd178bb77592ad7208882f5 (patch) | |
| tree | acc5209c2c0baf2f146a2abf8a65b2856e2313db | |
| parent | e7a6ce847fd06c4f132bbac2f2fdc8474753ad3c (diff) | |
| download | emacs-b07a86abb6d5bb3d5cd178bb77592ad7208882f5.tar.gz emacs-b07a86abb6d5bb3d5cd178bb77592ad7208882f5.zip | |
* test/lisp/emacs-lisp/comp-cstr-tests.el: Use macros in a simpler way
(comp-cstr-test-ts): Move out of `cl-eval-when`.
(comp-cstr-typespec-test): Delete.
(comp-cstr-synthesize-tests): Make it take the tests as an argument.
(comp-cstr-typespec-tests-alist): Delete var, pass its value to the
macro instead.
| -rw-r--r-- | test/lisp/emacs-lisp/comp-cstr-tests.el | 414 |
1 files changed, 204 insertions, 210 deletions
diff --git a/test/lisp/emacs-lisp/comp-cstr-tests.el b/test/lisp/emacs-lisp/comp-cstr-tests.el index fb1770f1f4a..edc70b12d4b 100644 --- a/test/lisp/emacs-lisp/comp-cstr-tests.el +++ b/test/lisp/emacs-lisp/comp-cstr-tests.el | |||
| @@ -29,218 +29,212 @@ | |||
| 29 | (require 'cl-lib) | 29 | (require 'cl-lib) |
| 30 | (require 'comp-cstr) | 30 | (require 'comp-cstr) |
| 31 | 31 | ||
| 32 | (cl-eval-when (compile eval load) | 32 | (defun comp-cstr-test-ts (type-spec) |
| 33 | 33 | "Create a constraint from TYPE-SPEC and convert it back to type specifier." | |
| 34 | (defun comp-cstr-test-ts (type-spec) | 34 | (let ((comp-ctxt (make-comp-cstr-ctxt))) |
| 35 | "Create a constraint from TYPE-SPEC and convert it back to type specifier." | 35 | (comp-cstr-to-type-spec (comp-type-spec-to-cstr type-spec)))) |
| 36 | (let ((comp-ctxt (make-comp-cstr-ctxt))) | 36 | |
| 37 | (comp-cstr-to-type-spec (comp-type-spec-to-cstr type-spec)))) | 37 | (defmacro comp-cstr-synthesize-tests (typespec-tests-alist) |
| 38 | 38 | "Generate all tests from TYPESPEC-TESTS-ALIST. | |
| 39 | (defun comp-cstr-typespec-test (number type-spec expected-type-spec) | 39 | The arg is an alist of: type specifier -> expected type specifier." |
| 40 | `(ert-deftest ,(intern (concat "comp-cstr-test-" (int-to-string number))) () | ||
| 41 | (should (equal (comp-cstr-test-ts ',type-spec) | ||
| 42 | ',expected-type-spec)))) | ||
| 43 | |||
| 44 | (defconst comp-cstr-typespec-tests-alist | ||
| 45 | '(;; 1 | ||
| 46 | (symbol . symbol) | ||
| 47 | ;; 2 | ||
| 48 | ((or string array) . array) | ||
| 49 | ;; 3 | ||
| 50 | ((or symbol number) . (or number symbol)) | ||
| 51 | ;; 4 | ||
| 52 | ((or cons atom) . t) ;; SBCL return T | ||
| 53 | ;; 5 | ||
| 54 | ((or integer number) . number) | ||
| 55 | ;; 6 | ||
| 56 | ((or (or integer symbol) number) . (or number symbol)) | ||
| 57 | ;; 7 | ||
| 58 | ((or (or integer symbol) (or number list)) . (or list number symbol)) | ||
| 59 | ;; 8 | ||
| 60 | ((or (or integer number) nil) . number) | ||
| 61 | ;; 9 | ||
| 62 | ((member foo) . (member foo)) | ||
| 63 | ;; 10 | ||
| 64 | ((member foo bar) . (member bar foo)) | ||
| 65 | ;; 11 | ||
| 66 | ((or (member foo) (member bar)) . (member bar foo)) | ||
| 67 | ;; 12 | ||
| 68 | ((or (member foo) symbol) . symbol) ;; SBCL return (OR SYMBOL (MEMBER FOO)) | ||
| 69 | ;; 13 | ||
| 70 | ((or (member foo) number) . (or (member foo) number)) | ||
| 71 | ;; 14 | ||
| 72 | ((or (integer 1 3) number) . number) | ||
| 73 | ;; 15 | ||
| 74 | (integer . integer) | ||
| 75 | ;; 16 | ||
| 76 | ((integer 1 2) . (integer 1 2)) | ||
| 77 | ;; 17 | ||
| 78 | ((or (integer -1 0) (integer 3 4)) . (or (integer -1 0) (integer 3 4))) | ||
| 79 | ;; 18 | ||
| 80 | ((or (integer -1 2) (integer 3 4)) . (integer -1 4)) | ||
| 81 | ;; 19 | ||
| 82 | ((or (integer -1 3) (integer 3 4)) . (integer -1 4)) | ||
| 83 | ;; 20 | ||
| 84 | ((or (integer -1 4) (integer 3 4)) . (integer -1 4)) | ||
| 85 | ;; 21 | ||
| 86 | ((or (integer -1 5) (integer 3 4)) . (integer -1 5)) | ||
| 87 | ;; 22 | ||
| 88 | ((or (integer -1 *) (integer 3 4)) . (integer -1 *)) | ||
| 89 | ;; 23 | ||
| 90 | ((or (integer -1 2) (integer * 4)) . (integer * 4)) | ||
| 91 | ;; 24 | ||
| 92 | ((and string array) . string) | ||
| 93 | ;; 25 | ||
| 94 | ((and cons atom) . nil) | ||
| 95 | ;; 26 | ||
| 96 | ((and (member foo) (member foo bar baz)) . (member foo)) | ||
| 97 | ;; 27 | ||
| 98 | ((and (member foo) (member bar)) . nil) | ||
| 99 | ;; 28 | ||
| 100 | ((and (member foo) symbol) . (member foo)) | ||
| 101 | ;; 29 | ||
| 102 | ((and (member foo) string) . nil) | ||
| 103 | ;; 30 | ||
| 104 | ((and (member foo) (integer 1 2)) . nil) | ||
| 105 | ;; 31 | ||
| 106 | ((and (member 1 2) (member 3 2)) . (integer 2 2)) | ||
| 107 | ;; 32 | ||
| 108 | ((and number (integer 1 2)) . (integer 1 2)) | ||
| 109 | ;; 33 | ||
| 110 | ((and integer (integer 1 2)) . (integer 1 2)) | ||
| 111 | ;; 34 | ||
| 112 | ((and (integer -1 0) (integer 3 5)) . nil) | ||
| 113 | ;; 35 | ||
| 114 | ((and (integer -1 2) (integer 3 5)) . nil) | ||
| 115 | ;; 36 | ||
| 116 | ((and (integer -1 3) (integer 3 5)) . (integer 3 3)) | ||
| 117 | ;; 37 | ||
| 118 | ((and (integer -1 4) (integer 3 5)) . (integer 3 4)) | ||
| 119 | ;; 38 | ||
| 120 | ((and (integer -1 5) nil) . nil) | ||
| 121 | ;; 39 | ||
| 122 | ((not symbol) . (not symbol)) | ||
| 123 | ;; 40 | ||
| 124 | ((or (member foo) (not (member foo bar))) . (not (member bar))) | ||
| 125 | ;; 41 | ||
| 126 | ((or (member foo bar) (not (member foo))) . t) | ||
| 127 | ;; 42 | ||
| 128 | ((or symbol (not sequence)) . (not sequence)) | ||
| 129 | ;; 43 | ||
| 130 | ((or symbol (not symbol)) . t) | ||
| 131 | ;; 44 | ||
| 132 | ((or symbol (not sequence)) . (not sequence)) | ||
| 133 | ;; 45 Conservative. | ||
| 134 | ((or vector (not sequence)) . t) | ||
| 135 | ;; 46 | ||
| 136 | ((or (integer 1 10) (not (integer * 5))) . (not (integer * 0))) | ||
| 137 | ;; 47 | ||
| 138 | ((or symbol (integer 1 10) (not (integer * 5))) . (not (integer * 0))) | ||
| 139 | ;; 48 | ||
| 140 | ((or (not symbol) (integer 1 10) (not (integer * 5))) . (not (or symbol (integer * 0)))) | ||
| 141 | ;; 49 | ||
| 142 | ((or symbol (not (member foo))) . (not (member foo))) | ||
| 143 | ;; 50 | ||
| 144 | ((or (not symbol) (not (member foo))) . (not symbol)) | ||
| 145 | ;; 51 Conservative. | ||
| 146 | ((or (not (member foo)) string) . (not (member foo))) | ||
| 147 | ;; 52 Conservative. | ||
| 148 | ((or (member foo) (not string)) . (not string)) | ||
| 149 | ;; 53 | ||
| 150 | ((or (not (integer 1 2)) integer) . t) | ||
| 151 | ;; 54 | ||
| 152 | ((or (not (integer 1 2)) (not integer)) . (not integer)) | ||
| 153 | ;; 55 | ||
| 154 | ((or (integer 1 2) (not integer)) . (not (or (integer * 0) (integer 3 *)))) | ||
| 155 | ;; 56 | ||
| 156 | ((or number (not (integer 1 2))) . t) | ||
| 157 | ;; 57 | ||
| 158 | ((or atom (not (integer 1 2))) . t) | ||
| 159 | ;; 58 | ||
| 160 | ((or atom (not (member foo))) . t) | ||
| 161 | ;; 59 | ||
| 162 | ((and symbol (not cons)) . symbol) | ||
| 163 | ;; 60 | ||
| 164 | ((and symbol (not symbol)) . nil) | ||
| 165 | ;; 61 | ||
| 166 | ((and atom (not symbol)) . atom) | ||
| 167 | ;; 62 | ||
| 168 | ((and atom (not string)) . (or array sequence atom)) | ||
| 169 | ;; 63 Conservative | ||
| 170 | ((and symbol (not (member foo))) . symbol) | ||
| 171 | ;; 64 Conservative | ||
| 172 | ((and symbol (not (member 3))) . symbol) | ||
| 173 | ;; 65 | ||
| 174 | ((and (not (member foo)) (integer 1 10)) . (integer 1 10)) | ||
| 175 | ;; 66 | ||
| 176 | ((and (member foo) (not (integer 1 10))) . (member foo)) | ||
| 177 | ;; 67 | ||
| 178 | ((and t (not (member foo))) . (not (member foo))) | ||
| 179 | ;; 68 | ||
| 180 | ((and integer (not (integer 3 4))) . (or (integer * 2) (integer 5 *))) | ||
| 181 | ;; 69 | ||
| 182 | ((and (integer 0 20) (not (integer 5 10))) . (or (integer 0 4) (integer 11 20))) | ||
| 183 | ;; 70 | ||
| 184 | ((and (not (member a)) (not (member b))) . (not (member a b))) | ||
| 185 | ;; 71 | ||
| 186 | ((and (not boolean) (not (member b))) . (not (or (member b) boolean))) | ||
| 187 | ;; 72 | ||
| 188 | ((and t (integer 1 1)) . (integer 1 1)) | ||
| 189 | ;; 73 | ||
| 190 | ((not (integer -1 5)) . (not (integer -1 5))) | ||
| 191 | ;; 74 | ||
| 192 | ((and boolean (or number marker)) . nil) | ||
| 193 | ;; 75 | ||
| 194 | ((and atom (or number marker)) . number-or-marker) | ||
| 195 | ;; 76 | ||
| 196 | ((and symbol (or number marker)) . nil) | ||
| 197 | ;; 77 | ||
| 198 | ((and (or symbol string) (or number marker)) . nil) | ||
| 199 | ;; 78 | ||
| 200 | ((and t t) . t) | ||
| 201 | ;; 79 | ||
| 202 | ((and (or marker number) (integer 0 0)) . (integer 0 0)) | ||
| 203 | ;; 80 | ||
| 204 | ((and t (not t)) . nil) | ||
| 205 | ;; 81 | ||
| 206 | ((or (integer 1 1) (not (integer 1 1))) . t) | ||
| 207 | ;; 82 | ||
| 208 | ((not t) . nil) | ||
| 209 | ;; 83 | ||
| 210 | ((not nil) . t) | ||
| 211 | ;; 84 | ||
| 212 | ((or (not string) t) . t) | ||
| 213 | ;; 85 | ||
| 214 | ((or (not vector) sequence) . sequence) | ||
| 215 | ;; 86 | ||
| 216 | ((or (not symbol) null) . t) | ||
| 217 | ;; 87 | ||
| 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)) | ||
| 221 | ;; 89 | ||
| 222 | ((or cons symbol) . (or list symbol)) ;; FIXME: Why `list'? | ||
| 223 | ;; 90 | ||
| 224 | ((or string char-table bool-vector vector) . array) | ||
| 225 | ;; 91 | ||
| 226 | ((or string char-table bool-vector vector number) . (or array number)) | ||
| 227 | ;; 92 | ||
| 228 | ((or string char-table bool-vector vector cons symbol number) . | ||
| 229 | (or number sequence symbol)) | ||
| 230 | ;; 93? | ||
| 231 | ;; FIXME: I get `cons' rather than `list'? | ||
| 232 | ;;((or null cons) . list) | ||
| 233 | ) | ||
| 234 | "Alist type specifier -> expected type specifier.")) | ||
| 235 | |||
| 236 | (defmacro comp-cstr-synthesize-tests () | ||
| 237 | "Generate all tests from `comp-cstr-typespec-tests-alist'." | ||
| 238 | `(progn | 40 | `(progn |
| 239 | ,@(cl-loop | 41 | ,@(cl-loop |
| 240 | for i from 1 | 42 | for i from 1 |
| 241 | for (ts . exp-ts) in comp-cstr-typespec-tests-alist | 43 | for (type-spec . expected-type-spec) in typespec-tests-alist |
| 242 | append (list (comp-cstr-typespec-test i ts exp-ts))))) | 44 | collect |
| 243 | 45 | `(ert-deftest ,(intern (format "comp-cstr-test-%d" i)) () | |
| 244 | (comp-cstr-synthesize-tests) | 46 | (should (equal (comp-cstr-test-ts ',type-spec) |
| 47 | ',expected-type-spec)))))) | ||
| 48 | |||
| 49 | (comp-cstr-synthesize-tests | ||
| 50 | (;; 1 | ||
| 51 | (symbol . symbol) | ||
| 52 | ;; 2 | ||
| 53 | ((or string array) . array) | ||
| 54 | ;; 3 | ||
| 55 | ((or symbol number) . (or number symbol)) | ||
| 56 | ;; 4 | ||
| 57 | ((or cons atom) . t) ;; Like SBCL | ||
| 58 | ;; 5 | ||
| 59 | ((or integer number) . number) | ||
| 60 | ;; 6 | ||
| 61 | ((or (or integer symbol) number) . (or number symbol)) | ||
| 62 | ;; 7 | ||
| 63 | ((or (or integer symbol) (or number list)) . (or list number symbol)) | ||
| 64 | ;; 8 | ||
| 65 | ((or (or integer number) nil) . number) | ||
| 66 | ;; 9 | ||
| 67 | ((member foo) . (member foo)) | ||
| 68 | ;; 10 | ||
| 69 | ((member foo bar) . (member bar foo)) | ||
| 70 | ;; 11 | ||
| 71 | ((or (member foo) (member bar)) . (member bar foo)) | ||
| 72 | ;; 12 | ||
| 73 | ((or (member foo) symbol) . symbol) ;; SBCL return (OR SYMBOL (MEMBER FOO)) | ||
| 74 | ;; 13 | ||
| 75 | ((or (member foo) number) . (or (member foo) number)) | ||
| 76 | ;; 14 | ||
| 77 | ((or (integer 1 3) number) . number) | ||
| 78 | ;; 15 | ||
| 79 | (integer . integer) | ||
| 80 | ;; 16 | ||
| 81 | ((integer 1 2) . (integer 1 2)) | ||
| 82 | ;; 17 | ||
| 83 | ((or (integer -1 0) (integer 3 4)) . (or (integer -1 0) (integer 3 4))) | ||
| 84 | ;; 18 | ||
| 85 | ((or (integer -1 2) (integer 3 4)) . (integer -1 4)) | ||
| 86 | ;; 19 | ||
| 87 | ((or (integer -1 3) (integer 3 4)) . (integer -1 4)) | ||
| 88 | ;; 20 | ||
| 89 | ((or (integer -1 4) (integer 3 4)) . (integer -1 4)) | ||
| 90 | ;; 21 | ||
| 91 | ((or (integer -1 5) (integer 3 4)) . (integer -1 5)) | ||
| 92 | ;; 22 | ||
| 93 | ((or (integer -1 *) (integer 3 4)) . (integer -1 *)) | ||
| 94 | ;; 23 | ||
| 95 | ((or (integer -1 2) (integer * 4)) . (integer * 4)) | ||
| 96 | ;; 24 | ||
| 97 | ((and string array) . string) | ||
| 98 | ;; 25 | ||
| 99 | ((and cons atom) . nil) | ||
| 100 | ;; 26 | ||
| 101 | ((and (member foo) (member foo bar baz)) . (member foo)) | ||
| 102 | ;; 27 | ||
| 103 | ((and (member foo) (member bar)) . nil) | ||
| 104 | ;; 28 | ||
| 105 | ((and (member foo) symbol) . (member foo)) | ||
| 106 | ;; 29 | ||
| 107 | ((and (member foo) string) . nil) | ||
| 108 | ;; 30 | ||
| 109 | ((and (member foo) (integer 1 2)) . nil) | ||
| 110 | ;; 31 | ||
| 111 | ((and (member 1 2) (member 3 2)) . (integer 2 2)) | ||
| 112 | ;; 32 | ||
| 113 | ((and number (integer 1 2)) . (integer 1 2)) | ||
| 114 | ;; 33 | ||
| 115 | ((and integer (integer 1 2)) . (integer 1 2)) | ||
| 116 | ;; 34 | ||
| 117 | ((and (integer -1 0) (integer 3 5)) . nil) | ||
| 118 | ;; 35 | ||
| 119 | ((and (integer -1 2) (integer 3 5)) . nil) | ||
| 120 | ;; 36 | ||
| 121 | ((and (integer -1 3) (integer 3 5)) . (integer 3 3)) | ||
| 122 | ;; 37 | ||
| 123 | ((and (integer -1 4) (integer 3 5)) . (integer 3 4)) | ||
| 124 | ;; 38 | ||
| 125 | ((and (integer -1 5) nil) . nil) | ||
| 126 | ;; 39 | ||
| 127 | ((not symbol) . (not symbol)) | ||
| 128 | ;; 40 | ||
| 129 | ((or (member foo) (not (member foo bar))) . (not (member bar))) | ||
| 130 | ;; 41 | ||
| 131 | ((or (member foo bar) (not (member foo))) . t) | ||
| 132 | ;; 42 | ||
| 133 | ((or symbol (not sequence)) . (not sequence)) | ||
| 134 | ;; 43 | ||
| 135 | ((or symbol (not symbol)) . t) | ||
| 136 | ;; 44 | ||
| 137 | ((or symbol (not sequence)) . (not sequence)) | ||
| 138 | ;; 45 Conservative. | ||
| 139 | ((or vector (not sequence)) . t) | ||
| 140 | ;; 46 | ||
| 141 | ((or (integer 1 10) (not (integer * 5))) . (not (integer * 0))) | ||
| 142 | ;; 47 | ||
| 143 | ((or symbol (integer 1 10) (not (integer * 5))) . (not (integer * 0))) | ||
| 144 | ;; 48 | ||
| 145 | ((or (not symbol) (integer 1 10) (not (integer * 5))) . (not (or symbol (integer * 0)))) | ||
| 146 | ;; 49 | ||
| 147 | ((or symbol (not (member foo))) . (not (member foo))) | ||
| 148 | ;; 50 | ||
| 149 | ((or (not symbol) (not (member foo))) . (not symbol)) | ||
| 150 | ;; 51 Conservative. | ||
| 151 | ((or (not (member foo)) string) . (not (member foo))) | ||
| 152 | ;; 52 Conservative. | ||
| 153 | ((or (member foo) (not string)) . (not string)) | ||
| 154 | ;; 53 | ||
| 155 | ((or (not (integer 1 2)) integer) . t) | ||
| 156 | ;; 54 | ||
| 157 | ((or (not (integer 1 2)) (not integer)) . (not integer)) | ||
| 158 | ;; 55 | ||
| 159 | ((or (integer 1 2) (not integer)) . (not (or (integer * 0) (integer 3 *)))) | ||
| 160 | ;; 56 | ||
| 161 | ((or number (not (integer 1 2))) . t) | ||
| 162 | ;; 57 | ||
| 163 | ((or atom (not (integer 1 2))) . t) | ||
| 164 | ;; 58 | ||
| 165 | ((or atom (not (member foo))) . t) | ||
| 166 | ;; 59 | ||
| 167 | ((and symbol (not cons)) . symbol) | ||
| 168 | ;; 60 | ||
| 169 | ((and symbol (not symbol)) . nil) | ||
| 170 | ;; 61 | ||
| 171 | ((and atom (not symbol)) . atom) | ||
| 172 | ;; 62 | ||
| 173 | ((and atom (not string)) . (or array sequence atom)) | ||
| 174 | ;; 63 Conservative | ||
| 175 | ((and symbol (not (member foo))) . symbol) | ||
| 176 | ;; 64 Conservative | ||
| 177 | ((and symbol (not (member 3))) . symbol) | ||
| 178 | ;; 65 | ||
| 179 | ((and (not (member foo)) (integer 1 10)) . (integer 1 10)) | ||
| 180 | ;; 66 | ||
| 181 | ((and (member foo) (not (integer 1 10))) . (member foo)) | ||
| 182 | ;; 67 | ||
| 183 | ((and t (not (member foo))) . (not (member foo))) | ||
| 184 | ;; 68 | ||
| 185 | ((and integer (not (integer 3 4))) . (or (integer * 2) (integer 5 *))) | ||
| 186 | ;; 69 | ||
| 187 | ((and (integer 0 20) (not (integer 5 10))) . (or (integer 0 4) (integer 11 20))) | ||
| 188 | ;; 70 | ||
| 189 | ((and (not (member a)) (not (member b))) . (not (member a b))) | ||
| 190 | ;; 71 | ||
| 191 | ((and (not boolean) (not (member b))) . (not (or (member b) boolean))) | ||
| 192 | ;; 72 | ||
| 193 | ((and t (integer 1 1)) . (integer 1 1)) | ||
| 194 | ;; 73 | ||
| 195 | ((not (integer -1 5)) . (not (integer -1 5))) | ||
| 196 | ;; 74 | ||
| 197 | ((and boolean (or number marker)) . nil) | ||
| 198 | ;; 75 | ||
| 199 | ((and atom (or number marker)) . number-or-marker) | ||
| 200 | ;; 76 | ||
| 201 | ((and symbol (or number marker)) . nil) | ||
| 202 | ;; 77 | ||
| 203 | ((and (or symbol string) (or number marker)) . nil) | ||
| 204 | ;; 78 | ||
| 205 | ((and t t) . t) | ||
| 206 | ;; 79 | ||
| 207 | ((and (or marker number) (integer 0 0)) . (integer 0 0)) | ||
| 208 | ;; 80 | ||
| 209 | ((and t (not t)) . nil) | ||
| 210 | ;; 81 | ||
| 211 | ((or (integer 1 1) (not (integer 1 1))) . t) | ||
| 212 | ;; 82 | ||
| 213 | ((not t) . nil) | ||
| 214 | ;; 83 | ||
| 215 | ((not nil) . t) | ||
| 216 | ;; 84 | ||
| 217 | ((or (not string) t) . t) | ||
| 218 | ;; 85 | ||
| 219 | ((or (not vector) sequence) . sequence) | ||
| 220 | ;; 86 | ||
| 221 | ((or (not symbol) null) . t) | ||
| 222 | ;; 87 | ||
| 223 | ((and (or null integer) (not (or null integer))) . nil) | ||
| 224 | ;; 88 | ||
| 225 | ((and (or (member a b c)) (not (or (member a b)))) . (member c)) | ||
| 226 | ;; 89 | ||
| 227 | ((or cons symbol) . (or list symbol)) ;; FIXME: Why `list'? | ||
| 228 | ;; 90 | ||
| 229 | ((or string char-table bool-vector vector) . array) | ||
| 230 | ;; 91 | ||
| 231 | ((or string char-table bool-vector vector number) . (or array number)) | ||
| 232 | ;; 92 | ||
| 233 | ((or string char-table bool-vector vector cons symbol number) . | ||
| 234 | (or number sequence symbol)) | ||
| 235 | ;; 93? | ||
| 236 | ;; FIXME: I get `cons' rather than `list'? | ||
| 237 | ;;((or null cons) . list) | ||
| 238 | )) | ||
| 245 | 239 | ||
| 246 | ;;; comp-cstr-tests.el ends here | 240 | ;;; comp-cstr-tests.el ends here |