* lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1): Fix logic.
* test/lisp/emacs-lisp/comp-cstr-tests.el
(comp-cstr-typespec-tests-alist): Add a couple of tests.
finally
(when (or (zerop n-pos) (zerop n-neg))
(apply #'comp-cstr-union-homogeneous dst srcs)
+ (when (zerop n-pos)
+ (setf (neg dst) t))
(cl-return-from comp-cstr-union-1 dst)))
;; Some are negated and some are not
((or symbol (not sequence)) . t)
((or vector (not sequence)) . (not sequence))
((or (integer 1 10) (not (integer * 5))) . (integer 1 *))
- ((or symbol (integer 1 10) (not (integer * 5))) . (integer 1 *)))
+ ((or symbol (integer 1 10) (not (integer * 5))) . (integer 1 *))
+ ((or symbol (not (member foo))) . (not (member foo)))
+ ((or (not symbol) (not (member foo))) . (not symbol)))
"Alist type specifier -> expected type specifier.")
(defmacro comp-cstr-synthesize-tests ()