emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#70524: closed ([PATCH] Fix `map-elt` with `setf` for subplaces)


From: GNU bug Tracking System
Subject: bug#70524: closed ([PATCH] Fix `map-elt` with `setf` for subplaces)
Date: Mon, 06 May 2024 14:02:02 +0000

Your message dated Mon, 06 May 2024 16:02:01 +0200
with message-id <87le4nght2.fsf@web.de>
and subject line Re: bug#70524: [PATCH] Fix `map-elt` with `setf` for subplaces
has caused the debbugs.gnu.org bug report #70524,
regarding [PATCH] Fix `map-elt` with `setf` for subplaces
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
70524: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70524
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- 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.

Attachment: 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 ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]