1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-08 20:58:58 +00:00

Fix the error message when modifying maps in-place (Bug#34941)

* lisp/emacs-lisp/map.el (map-not-inplace): Fix the message of the
error.
(map-put!): When signaling map-no-inplace error, output the map that
cannot be updated inplace.
This commit is contained in:
Nicolas Petton 2019-03-22 10:06:42 +01:00
parent 09c220a5cf
commit 4174409c53
No known key found for this signature in database
GPG Key ID: E8BCD7866AFCF978

View File

@ -96,7 +96,7 @@ Returns the result of evaluating the form associated with MAP-VAR's type."
(t (error "Unsupported map type `%S': %S"
(type-of ,map-var) ,map-var)))))
(define-error 'map-not-inplace "Cannot modify map in-place: %S")
(define-error 'map-not-inplace "Cannot modify map in-place")
(defsubst map--plist-p (list)
(and (consp list) (not (listp (car list)))))
@ -393,7 +393,7 @@ If you want to insert an element without modifying MAP, use `map-insert'."
(let ((oldmap map))
(setf (alist-get key map key nil (or testfn #'equal)) value)
(unless (eq oldmap map)
(signal 'map-not-inplace (list map)))))
(signal 'map-not-inplace (list oldmap)))))
:hash-table (puthash key value map)
;; FIXME: If `key' is too large, should we signal `map-not-inplace'
;; and let `map-insert' grow the array?