Function: comp--union-typesets

comp--union-typesets is a byte-compiled function defined in comp-cstr.el.gz.

Signature

(comp--union-typesets &rest TYPESETS)

Documentation

Union types present into TYPESETS.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/comp-cstr.el.gz
(defun comp--union-typesets (&rest typesets)
  "Union types present into TYPESETS."
  (or (gethash typesets (comp-cstr-ctxt-union-typesets-mem comp-ctxt))
      (puthash typesets
               (cl-loop
                ;; List of (TYPE . SUPERTYPES)", ordered from
                ;; "most general" to "least general"
                with typess = (sort (mapcar #'comp-supertypes
                                            (apply #'append typesets))
                                    (lambda (l1 l2)
                                      (<= (length l1) (length l2))))
                with res = '()
                for types in typess
                ;; Don't keep this type if it's a subtype of one of
                ;; the other types.
                unless (comp--intersection types res)
                do (push (car types) res)
                finally return (comp--normalize-typeset res))
               (comp-cstr-ctxt-union-typesets-mem comp-ctxt))))