- (if (and (null required)
- (null optional)
- (eq rest *universal-type*)
- (not keyp))
- *wild-type*
- (%make-values-type :required required
- :optional optional
- :rest rest
- :keyp keyp
- :keywords keywords
- :allowp allowp))))
- (apply #'%make-values-type initargs)))
+ (declare (ignore keywords))
+ (when keyp
+ (error "&KEY appeared in a VALUES type specifier ~S."
+ `(values ,@args)))
+ (if llk-p
+ (make-values-type :required required
+ :optional optional
+ :rest rest
+ :allowp allowp)
+ (make-short-values-type required))))
+ (multiple-value-bind (required optional rest)
+ (canonicalize-args-type-args required optional rest)
+ (cond ((and (null required)
+ (null optional)
+ (eq rest *universal-type*))
+ *wild-type*)
+ ((memq *empty-type* required)
+ *empty-type*)
+ (t (make-values-type-cached required optional
+ rest allowp))))))