X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ffull-eval.impure.lisp;h=032634f189adc7a43e141714105f372073244751;hb=b5696612c774dac57abff3b5abe3f04ebe0ce2c7;hp=98f345f725c4daea9d99929a30441b716747aed3;hpb=5214129a24e5876a1ad1af4fb6f09ecc353d1c31;p=sbcl.git diff --git a/tests/full-eval.impure.lisp b/tests/full-eval.impure.lisp index 98f345f..032634f 100644 --- a/tests/full-eval.impure.lisp +++ b/tests/full-eval.impure.lisp @@ -55,3 +55,22 @@ (assert (eql #c(1.0 2.0) (evaluated-struct-csingle *evaluated-struct*))) (assert (eql #c(2.0d0 3.0d0) (evaluated-struct-cdouble *evaluated-struct*)))))) +;;; Prior to 1.0.25, the interpreter checked for package lock +;;; violation for a local function in the fbinding form's body's +;;; lexical environment. +(let ((sb-ext:*evaluator-mode* :interpret)) + (assert + (ignore-errors + (eval + '(eql + (locally (declare (disable-package-locks + ;; rather than create a whole new package + ;; just to test this corner case, we'll + ;; lexically shadow something innocuous in + ;; the CL package. + cl:ed)) + (flet ((cl:ed () + 42)) + (declare (enable-package-locks cl:ed)) + (cl:ed))) + 42)))))