Function: comp-cstr-union-homogeneous-no-range
comp-cstr-union-homogeneous-no-range is a byte-compiled function
defined in comp-cstr.el.gz.
Signature
(comp-cstr-union-homogeneous-no-range DST &rest SRCS)
Documentation
As comp-cstr-union but excluding the irange component.
All SRCS constraints must be homogeneously negated or non-negated.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/comp-cstr.el.gz
;;; Union specific code.
(defun comp-cstr-union-homogeneous-no-range (dst &rest srcs)
"As `comp-cstr-union' but excluding the irange component.
All SRCS constraints must be homogeneously negated or non-negated."
;; Type propagation.
(setf (comp-cstr-typeset dst)
(apply #'comp-union-typesets (mapcar #'comp-cstr-typeset srcs)))
;; Value propagation.
(setf (comp-cstr-valset dst)
(comp-normalize-valset
(cl-loop
with values = (mapcar #'comp-cstr-valset srcs)
;; TODO sort.
for v in (cl-remove-duplicates (apply #'append values)
:test #'equal)
;; We propagate only values those types are not already
;; into typeset.
when (cl-notany (lambda (x)
(comp-subtype-p (type-of v) x))
(comp-cstr-typeset dst))
collect v)))
dst)