Commit [3c3006]  Maximize  Restore  History

setf: pre-defined setf-expanders should handle multiple value places gracefully.

* The GETF, LOGBITP, LDB and MASK-FIELD setf-expanders all take a
PLACE argument, the setf-expansion for which was being obtained via
GET-SETF-METHOD, which is the CLtL1 version of GET-SETF-EXPANSION, but
throws an error if a PLACE multiple values. This also pre-dates the
adoption of VALUES places.

* The most reasonable interpretation of the spec appears to be that
any values after the first are to be ignored upon reading and set to NIL
upon writing.

* To do so, change each use to SB!XC:GET-SETF-EXPANSION instead of
GET-SETF-METHOD, and bind any symbols in the list of new value locations
to NIL before invoking the setter form.

Alastair Bridgewater Alastair Bridgewater 2011-03-31

Alastair Bridgewater Alastair Bridgewater 2011-10-22

changed NEWS
changed src
changed src/code
changed src/code/early-setf.lisp
NEWS Diff Switch to side-by-side view
src/code/early-setf.lisp Diff Switch to side-by-side view