X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.pure.lisp;h=92079e7c5f591401ffc1febca3d0d54a5bcfc536;hb=5193965ff7688f7d748962405343ed666bf616b2;hp=c61786e99a3dc1128e9c6984ce8ebe6020b3e849;hpb=d7cbe5c40e93796d326937f3fb962fa4d7b1fa85;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index c61786e..92079e7 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -4860,3 +4860,23 @@ rest))))) (dotimes (i limit) (test-function (make-function i) i))))) + +(with-test (:name :apply-aref) + (flet ((test (form) + (let (warning) + (handler-bind ((warning (lambda (c) (setf warning c)))) + (compile nil `(lambda (x y) (setf (apply #'sbit x y) 10)))) + (assert (not warning))))) + (test `(lambda (x y) (setf (apply #'aref x y) 21))) + (test `(lambda (x y) (setf (apply #'bit x y) 1))) + (test `(lambda (x y) (setf (apply #'sbit x y) 0))))) + +(with-test (:name :warn-on-the-values-constant) + (multiple-value-bind (fun warnings-p failure-p) + (compile nil + ;; The compiler used to elide this test without + ;; noting that the type demands multiple values. + '(lambda () (the (values fixnum fixnum) 1))) + (declare (ignore warnings-p)) + (assert (functionp fun)) + (assert failure-p)))