&environment in setf-lambda-lists leads to call failure
Minimal test case:
(defsetf foo (&environment env var) (value)
var)
(setf (foo 0) 1)
The call errors out:
;; In form
;; (SETF (FOO 0) 1)
;; Wrong number of arguments passed to function FOO.
;; [Condition of type SI:SIMPLE-PROGRAM-ERROR]
;;
;; Restarts:
;; 0: [RETRY] Retry SLIME REPL evaluation request.
;; 1: [*PROCESS-INPUT] Continue reading input.
;; 2: [ABORT] Return to SLIME's top level.
;; 3: [CLOSE-CONNECTION] Close SLIME connection.
;; 4: [RESTART-TOPLEVEL] Go back to Top-Level REPL.
;;
;; Backtrace:
;; 0: DEBUG-IN-EMACS
;; 1: INVOKE-SLIME-DEBUGGER
;; 2: G992
;; 3: CALL-WITH-DEBUGGER-HOOK
;; 4: SWANK-DEBUGGER-HOOK
;; 5: #<bytecompiled-function FOO>
;; 6: EVAL-REGION
;; 7: G102
;; 8: TRACK-PACKAGE
;; 9: G101
;; 10: CALL-WITH-RETRY-RESTART
;; 11: G100
;; 12: CALL-WITH-BUFFER-SYNTAX
;; 13: REPL-EVAL
;; 14: LISTENER-EVAL
;; 15: #<bytecompiled-function BYTECODES>
;; 16: EVAL-FOR-EMACS
;; 17: PROCESS-REQUESTS
;; 18: G372
;; 19: HANDLE-REQUESTS
;; 20: G651
;; 21: CALL-WITH-BINDINGS
;; 22: REPL-INPUT-STREAM-READ
;; 23: G643
;; 24: G226
;; 25: CALL-WITH-LOCK-HELD
;; 26: G225
;; 27: SIMPLE-REPL
;; 28: G594
;; 29: G585
;; 30: CALL-WITH-USER-BREAK-HANDLER
;; 31: G582
;; 32: CALL-WITH-DEBUGGER-HOOK
;; 33: G626
;; 34: CALL-WITH-BINDINGS
;; 35: SIMPLE-SERVE-REQUESTS
;; 36: SERVE-REQUESTS
;; 37: ACCEPT-CONNECTIONS
;; 38: SERVE
;; 39: SERVE-LOOP
;; 40: SETUP-SERVER
;; 41: START-SERVER
;; 42: #<bytecompiled-function BYTECODES>
;; 43: #<bytecompiled-function BYTECODES>
;; --more--
According to CLHS defsetf takes a defsetf-lambda-list, which is described in 3.4.7 and allows the &environment parameter.