(apply #'type-intersection element-supertypes)))))
(union-type
(let ((union-types (union-type-types type))
- (element-type *empty-type*)
+ (element-type nil)
(element-supertypes nil))
(dolist (union-type union-types)
(multiple-value-bind (cur-type cur-supertype)
(cond
((eq element-type *wild-type*)
nil)
- ((eq element-type *empty-type*)
+ ((eq element-type nil)
(setf element-type cur-type))
((or (eq cur-type *wild-type*)
;; If each of the two following tests fail, it is not
;;; can pick them apart in the DEFTRANSFORMS, and transform '(3) style
;;; dimensions to integer args directly.
(define-source-transform make-array (dimensions &rest keyargs &environment env)
- (if (and (fun-lexically-notinline-p 'list)
- (fun-lexically-notinline-p 'vector))
+ (if (or (and (fun-lexically-notinline-p 'list)
+ (fun-lexically-notinline-p 'vector))
+ (oddp (length keyargs)))
(values nil t)
(multiple-value-bind (new-dimensions rank)
(flet ((constant-dims (dimensions)