X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=inline;f=tests%2Fdefstruct.impure.lisp;h=cc4c7961fd7d24ac90eeb6e3c9d7f47ed9291fa9;hb=0573ba54479d1d65e2c8a14daffd2976e249bf40;hp=029babdc875ef26a2c7b564616d5f14947740cd8;hpb=a64589ed34ce0298fae164476af7de14c4652909;p=sbcl.git diff --git a/tests/defstruct.impure.lisp b/tests/defstruct.impure.lisp index 029babd..cc4c796 100644 --- a/tests/defstruct.impure.lisp +++ b/tests/defstruct.impure.lisp @@ -25,15 +25,17 @@ ;;; An &AUX variable in a boa-constructor without a default value ;;; means "do not initialize slot" and does not cause type error +(declaim (notinline opaque-identity)) +(defun opaque-identity (x) x) + (defstruct (boa-saux (:constructor make-boa-saux (&aux a (b 3) (c)))) (a #\! :type (integer 1 2)) (b #\? :type (integer 3 4)) (c #\# :type (integer 5 6))) (let ((s (make-boa-saux))) - (declare (notinline identity)) (locally (declare (optimize (safety 3)) (inline boa-saux-a)) - (assert (raises-error? (identity (boa-saux-a s)) type-error))) + (assert (raises-error? (opaque-identity (boa-saux-a s)) type-error))) (setf (boa-saux-a s) 1) (setf (boa-saux-c s) 5) (assert (eql (boa-saux-a s) 1)) @@ -42,10 +44,9 @@ ; these two checks should be ; kept separated (let ((s (make-boa-saux))) - (declare (notinline identity)) (locally (declare (optimize (safety 0)) (inline boa-saux-a)) - (assert (eql (identity (boa-saux-a s)) 0))) + (assert (eql (opaque-identity (boa-saux-a s)) 0))) (setf (boa-saux-a s) 1) (setf (boa-saux-c s) 5) (assert (eql (boa-saux-a s) 1)) @@ -53,10 +54,9 @@ (assert (eql (boa-saux-c s) 5))) (let ((s (make-boa-saux))) - (declare (notinline identity)) (locally (declare (optimize (safety 3)) (notinline boa-saux-a)) - (assert (raises-error? (identity (boa-saux-a s)) type-error))) + (assert (raises-error? (opaque-identity (boa-saux-a s)) type-error))) (setf (boa-saux-a s) 1) (setf (boa-saux-c s) 5) (assert (eql (boa-saux-a s) 1))