*hairy-progv-var*))))
(with-test (:name :fill-complex-single-float)
- (assert (eql #c(-1.0 2.0)
- (aref (funcall
- (lambda ()
- (make-array 2
- :element-type '(complex single-float)
- :initial-element #c(-1.0 2.0))))
- 0))))
+ (assert (every (lambda (x) (eql x #c(-1.0 -2.0)))
+ (funcall
+ (lambda ()
+ (make-array 2
+ :element-type '(complex single-float)
+ :initial-element #c(-1.0 -2.0)))))))
+
+(with-test (:name :make-array-symbol-as-initial-element)
+ (assert (every (lambda (x) (eq x 'a))
+ (funcall
+ (compile nil
+ `(lambda ()
+ (make-array 12 :initial-element 'a)))))))
\f
;;;; tests not in the problem domain, but of the consistency of the
;;;; compiler machinery itself
`(lambda (x y z)
(make-array '3 :initial-contents `(,x ,y ,z)))))))
+;;; optimizing (EXPT -1 INTEGER)
+(test-util:with-test (:name (expt minus-one integer))
+ (dolist (x '(-1 -1.0 -1.0d0))
+ (let ((fun (compile nil `(lambda (x) (expt ,x (the fixnum x))))))
+ (assert (zerop (count-code-callees fun)))
+ (dotimes (i 12)
+ (if (oddp i)
+ (assert (eql x (funcall fun i)))
+ (assert (eql (- x) (funcall fun i))))))))
+
;;; success