- (res (any))
- (exact nil))
- (dolist (type types (values res exact))
- (when (eq type (specifier-type 'function))
- ;; KLUDGE: Deal with (and function instance), both of which
- ;; have an exact primitive type.
- (return (part-of function)))
- (multiple-value-bind (ptype ptype-exact)
+ (res (any)))
+ ;; why NIL for the exact? Well, we assume that the
+ ;; intersection type is in fact doing something for us:
+ ;; that is, that each of the types in the intersection is
+ ;; in fact cutting off some of the type lattice. Since no
+ ;; intersection type is represented by a primitive type and
+ ;; primitive types are mutually exclusive, it follows that
+ ;; no intersection type can represent the entirety of the
+ ;; primitive type. (And NIL is the conservative answer,
+ ;; anyway). -- CSR, 2006-09-14
+ (dolist (type types (values res nil))
+ (multiple-value-bind (ptype)