X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fsetf.impure.lisp;h=086702981e739e923192e7e70d1aef37b7b6ddb7;hb=7e24349c17298e2959e853ea411b5f65d9f7f332;hp=b15917360f9042f151268735288b06e0d2cae296;hpb=175c318c892b0627b36fa3c4db66f59680242204;p=sbcl.git diff --git a/tests/setf.impure.lisp b/tests/setf.impure.lisp index b159173..0867029 100644 --- a/tests/setf.impure.lisp +++ b/tests/setf.impure.lisp @@ -51,4 +51,34 @@ (setf (macro-function 'nothing-at-all nil) fun) (assert (eq fun (macro-function 'nothing-at-all nil)))) + +;;; DEFSETF accepts &ENVIRONMENT but not &AUX +(defsetf test-defsetf-env-1 (&environment env) (new) + (declare (ignore new)) + (if (macro-function 'defsetf-env-trick env) + :local + :global)) + +(defsetf test-defsetf-env-2 (local global &environment env) (new) + (declare (ignore new)) + (if (macro-function 'defsetf-env-trick env) + local + global)) + +(assert (eq :local (macrolet ((defsetf-env-trick ())) + (setf (test-defsetf-env-1) 13)))) + +(assert (eq :global (setf (test-defsetf-env-1) 13))) + +(assert (eq :local (macrolet ((defsetf-env-trick ())) + (setf (test-defsetf-env-2 :local :oops) 13)))) + +(assert (eq :global (setf (test-defsetf-env-2 :oops :global) 13))) + +(assert (eq :error + (handler-case + (eval '(defsetf test-defsetf-aux (&aux aux) (new) nil)) + (error () + :error)))) + ;;; success