--- Begin Message ---
Subject: |
[PATCH] Fix `map-elt` with `setf` for subplaces |
Date: |
Tue, 23 Apr 2024 02:10:42 +0000 |
Hello,
Currently, the use
(let ((arr (vector 0 1 2 3 4 5 6)))
(setf (map-elt (cl-subseq arr 3) 0)
27)
arr)
expands to
(let ((arr (vector 0 1 2 3 4 5 6)))
(let* ((v arr))
(condition-case nil
(with-no-warnings
(map-put! (cl-subseq v 3) 0 27 nil))
(map-not-inplace
(let* ((new (map-insert (cl-subseq v 3) 0 27)))
(progn
(cl-replace v new :start1 3 :end1 nil)
new))
27)))
arr)
which does not modify the original variable `arr` due to how `map-put!`
is being used. With the attached patch, it would expand to
(let ((arr (vector 0 1 2 3 4 5 6)))
(let* ((v arr))
(condition-case nil
(with-no-warnings
(let* ((m (cl-subseq v 3)))
(progn
(map-put! m 0 27 nil)
(let* ((new m))
(progn
(cl-replace v new :start1 3 :end1 nil)
new))
27)))
(map-not-inplace
(let* ((new (map-insert (cl-subseq v 3) 0 27)))
(progn
(cl-replace v new :start1 3 :end1 nil)
new))
27)))
arr)
which correctly sets the value using `cl-replace` as the setter for
`cl-subseq`.
Thank you.
0001-Make-setf-with-map-elt-work-with-subplaces.patch
Description: Text Data
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#70524: [PATCH] Fix `map-elt` with `setf` for subplaces |
Date: |
Mon, 06 May 2024 16:02:01 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hello,
It seems the discussion has come to an end, and we have not decided to
do anything, so I'm closing this report for now.
Feel free to reopen when there is something new, or to continue
discussing other aspects in this or other/new bug reports.
Thank you,
Michael.
--- End Message ---