X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ftype.pure.lisp;h=07ad60d76917469590c8aa80eb9f8b8b3d034230;hb=048fc437281b9ae2c0b038958f74070fb61f9153;hp=31f8688c16e915a317b61caab34776cb76e0fde2;hpb=1f1ffa37f8eed97c92c55b25f200e27940ef9d9e;p=sbcl.git diff --git a/tests/type.pure.lisp b/tests/type.pure.lisp index 31f8688..07ad60d 100644 --- a/tests/type.pure.lisp +++ b/tests/type.pure.lisp @@ -364,3 +364,26 @@ ACTUAL ~D DERIVED ~D~%" (unless (member char chars) (assert (not (typep char type))) (assert (typep char not-type))))))))) + +(with-test (:name (:check-type :store-value :complex-place)) + (let ((a (cons 0.0 2)) + (handler-invoked nil)) + (handler-bind ((error + (lambda (c) + (declare (ignore c)) + (assert (not handler-invoked)) + (setf handler-invoked t) + (invoke-restart 'store-value 1)))) + (check-type (car a) integer)) + (assert (eql (car a) 1)))) + +;;; The VOP FIXNUMP/UNSIGNED-BYTE-64 was broken on x86-64, failing +;;; the first ASSERT below. The second ASSERT takes care that the fix +;;; doesn't overshoot the mark. +(with-test (:name (:typep :fixnum-if-unsigned-byte)) + (let ((f (compile nil + (lambda (x) + (declare (type (unsigned-byte #.sb-vm:n-word-bits) x)) + (typep x (quote fixnum)))))) + (assert (not (funcall f (1+ most-positive-fixnum)))) + (assert (funcall f most-positive-fixnum))))