X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.pure.lisp;h=2388091b106f4c36dac8a50011cd4d1afe92a29b;hb=219cc40793f9c82fb943b29a1846f898f4f9de1e;hp=a8d0eea9c9b9e460ec281718bc274aa001d739aa;hpb=57e571d82eb271e41f3e8e9de69ad9501888d142;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index a8d0eea..2388091 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -4089,3 +4089,27 @@ (multiple-value-bind (q r) (funcall fun 0) (assert (eql -0d0 q)) (assert (eql 0d0 r))))) + +(with-test (:name :non-constant-keyword-typecheck) + (let ((fun (compile nil + `(lambda (p1 p3 p4) + (declare (type keyword p3)) + (tree-equal p1 (cons 1 2) (the (member :test) p3) p4))))) + (assert (funcall fun (cons 1.0 2.0) :test '=)))) + +(with-test (:name :truncate-wild-values) + (multiple-value-bind (q r) + (handler-bind ((warning #'error)) + (let ((sb-c::*check-consistency* t)) + (funcall (compile nil + `(lambda (a) + (declare (type (member 1d0 2d0) a)) + (block return-value-tag + (funcall + (the function + (catch 'debug-catch-tag + (return-from return-value-tag + (progn (truncate a))))))))) + 2d0))) + (assert (eql 2 q)) + (assert (eql 0d0 r))))