+
+(with-test (:name :bug-309130)
+ (assert (eq :warning
+ (handler-case
+ (compile nil `(lambda () (svref (make-array 8 :adjustable t) 1)))
+ ((and warning (not style-warning)) ()
+ :warning))))
+ (assert (eq :warning
+ (handler-case
+ (compile nil `(lambda (x)
+ (declare (optimize (debug 0)))
+ (declare (type vector x))
+ (list (fill-pointer x) (svref x 1))))
+ ((and warning (not style-warning)) ()
+ :warning))))
+ (assert (eq :warning
+ (handler-case
+ (compile nil `(lambda (x)
+ (list (vector-push (svref x 0) x))))
+ ((and warning (not style-warning)) ()
+ :warning))))
+ (assert (eq :warning
+ (handler-case
+ (compile nil `(lambda (x)
+ (list (vector-push-extend (svref x 0) x))))
+ ((and warning (not style-warning)) ()
+ :warning)))))
+
+(with-test (:name :bug-646796)
+ (assert 42
+ (funcall
+ (compile nil
+ `(lambda ()
+ (load-time-value (the (values fixnum) 42)))))))
+
+(with-test (:name :bug-654289)
+ (let* ((big (labels ((make-tree (n acc)
+ (cond ((zerop n) acc)
+ (t (make-tree (1- n) (cons acc acc))))))
+ (make-tree 10000 nil)))
+ (small '((1) (2) (3)))
+ (t0 (get-internal-run-time))
+ (f1 (compile nil `(lambda (x) (eq x (quote ,big)))))
+ (t1 (get-internal-run-time))
+ (f2 (compile nil `(lambda (x) (eq x (quote ,small)))))
+ (t2 (get-internal-run-time)))
+ (assert (funcall f1 big))
+ (assert (funcall f2 small))
+ ;; Compile time should not explode just because there's a big constant
+ ;; object in the source.
+ (assert (> 10 (abs (- (- t1 t0) (- t2 t1)))))))