+
+;;; CLHS, ADJUST-ARRAY: An error of type error is signaled if
+;;; fill-pointer is supplied and non-nil but array has no fill pointer.
+(assert (eq :good
+ (handler-case
+ (let ((array (make-array 12)))
+ (assert (not (array-has-fill-pointer-p array)))
+ (adjust-array array 12 :fill-pointer t)
+ array)
+ (type-error ()
+ :good))))
+
+;;; SIMPLE-VECTOR-COMPARE-AND-SWAP
+
+(let ((v (vector 1)))
+ ;; basics
+ (assert (eql 1 (sb-kernel:simple-vector-compare-and-swap v 0 1 2)))
+ (assert (eql 2 (sb-kernel:simple-vector-compare-and-swap v 0 1 3)))
+ (assert (eql 2 (svref v 0)))
+ ;; bounds
+ (multiple-value-bind (res err)
+ (ignore-errors (sb-kernel:simple-vector-compare-and-swap v -1 1 2))
+ (assert (not res))
+ (assert (typep err 'type-error)))
+ (multiple-value-bind (res err)
+ (ignore-errors (sb-kernel:simple-vector-compare-and-swap v 1 1 2))
+ (assert (not res))
+ (assert (typep err 'type-error))))
+
+;; type of the first argument
+(multiple-value-bind (res err)
+ (ignore-errors (sb-kernel:simple-vector-compare-and-swap "foo" 1 1 2))
+ (assert (not res))
+ (assert (typep err 'type-error)))