(error ()
:error))))
+(handler-bind ((style-warning #'error))
+ (compile nil '(lambda ()
+ (defsetf test-defsetf-no-env (foo) (new)
+ `(set-foo ,foo ,new))))
+ (compile nil '(lambda ()
+ (defsetf test-defsetf-ignore-env (foo &environment env) (new)
+ (declare (ignore env))
+ `(set-foo ,foo ,new)))))
+
+;;; Not required by the spec, but allowes compiler-macros for SETF-functiosn
+;;; to see their constant argument forms.
+(with-test (:name constantp-aware-get-setf-expansion)
+ (multiple-value-bind (temps values stores set get)
+ (get-setf-expansion '(foo 1 2 3))
+ (assert (not temps))
+ (assert (not values))
+ (assert (equal `(funcall #'(setf foo) ,@stores 1 2 3) set))
+ (assert (equal '(foo 1 2 3) get))))
+
+(with-test (:name :update-fn-should-be-a-symbol-in-defsetf)
+ (assert (eq :error
+ (handler-case
+ (eval '(defsetf access-fn 5))
+ (error ()
+ :error)))))
+
+(with-test (:name :getf-unused-default-variable)
+ (handler-bind ((style-warning #'error))
+ (compile nil `(lambda (x y)
+ (setf (gethash :x x 0) 4)
+ (setf (getf y :y 0) 4)
+ (setf (get 'z :z 0) 4)))))
+
;;; success