(ctu:assert-no-consing (funcall f))))
(with-test (:name :array-type-predicates)
- (dolist (et sb-kernel::*specialized-array-element-types*)
+ (dolist (et (list* '(integer -1 200) '(integer -256 1)
+ '(integer 0 128)
+ '(integer 0 (128))
+ '(double-float 0d0 (1d0))
+ '(single-float (0s0) (1s0))
+ '(or (eql 1d0) (eql 10d0))
+ '(member 1 2 10)
+ '(complex (member 10 20))
+ '(complex (member 10d0 20d0))
+ '(complex (member 10s0 20s0))
+ '(or integer double-float)
+ '(mod 1)
+ #+sb-unicode 'extended-char
+ sb-kernel::*specialized-array-element-types*))
(when et
(let* ((v (make-array 3 :element-type et))
(fun (compile nil `(lambda ()
(assert (handler-case
(compile nil `(lambda (x) (array-row-major-index x)))
(warning () nil))))
+
+(with-test (:name :array-rank-transform)
+ (compile nil `(lambda (a) (array-rank (the an-imaginary-type a)))))
+
+(with-test (:name (:array-rank-fold :bug-1252108))
+ (let (noted)
+ (handler-bind ((sb-ext::code-deletion-note
+ (lambda (x)
+ (setf noted x))))
+ (compile nil
+ `(lambda (a)
+ (typecase a
+ ((array t 2)
+ (when (= (array-rank a) 3)
+ (array-dimension a 2)))))))
+ (assert noted)))
+
+(with-test (:name :upgraded-array-element-type-undefined-type)
+ (raises-error? (upgraded-array-element-type 'an-undefined-type))
+ (raises-error? (upgraded-array-element-type '(and fixnum an-undefined-type))))