force-hairy)))
((not (eq vcount :unknown))
(maybe-negate-check value
- (values-type-start ctype vcount)
- (values-type-start atype vcount)
+ (values-type-out ctype vcount)
+ (values-type-out atype vcount)
t))
(t
(values :too-hairy nil))))))))
((= length 1)
(single-value-type atype))
(t
- (make-values-type :required
- (values-type-start atype length)))))
+ (make-values-type
+ :required (values-type-out atype length)))))
(dtype (node-derived-type cast))
- (dtype (make-values-type :required
- (values-type-start dtype length))))
+ (dtype (make-values-type
+ :required (values-type-out dtype length))))
(setf (cast-asserted-type cast) atype)
(setf (node-derived-type cast) dtype)))
(do-blocks (block component)
(when (block-type-check block)
(do-nodes (node cont block)
- (when (cast-p node)
- (when (cast-type-check node)
- (cast-check-uses node))
+ (when (and (cast-p node)
+ (cast-type-check node))
+ (cast-check-uses node)
(cond ((worth-type-check-p node)
(casts (cons node (not (probable-type-check-p node)))))
(t
(:too-hairy
(let ((*compiler-error-context* cast))
(when (policy cast (>= safety inhibit-warnings))
- (compiler-note
+ (compiler-notify
"type assertion too complex to check:~% ~S."
(type-specifier (coerce-to-values (cast-asserted-type cast))))))
(setf (cast-type-to-check cast) *wild-type*)