]> code.delx.au - gnu-emacs/commitdiff
Fix a byte-compiler error in map-put and map-delete
authorNicolas Petton <nicolas@petton.fr>
Fri, 5 Jun 2015 23:08:00 +0000 (01:08 +0200)
committerNicolas Petton <nicolas@petton.fr>
Fri, 5 Jun 2015 23:26:25 +0000 (01:26 +0200)
* lisp/emacs-lisp/map.el (map-put, map-delete): Ensure that `setq' is
called with a symbol.

lisp/emacs-lisp/map.el

index b10be44c2184c28e43b1d4596132cbffe5c37780..897743e5b10e3c85c533de1191bbdcfa5cdb250c 100644 (file)
@@ -113,11 +113,14 @@ with VALUE.
 
 MAP can be a list, hash-table or array."
   (declare (debug t))
-  `(progn
-     (map--dispatch (m ,map m)
-       :list (setq ,map (cons (cons ,key ,value) m))
-       :hash-table (puthash ,key ,value m)
-       :array (aset m ,key ,value))))
+  (let ((symbol (symbolp map)))
+    `(progn
+       (map--dispatch (m ,map m)
+         :list (if ,symbol
+                   (setq ,map (cons (cons ,key ,value) m))
+                 (error "Literal lists are not allowed, %s must be a symbol" ',map))
+         :hash-table (puthash ,key ,value m)
+         :array (aset m ,key ,value)))))
 
 (defmacro map-delete (map key)
   "In MAP, delete the key KEY if present and return MAP.
@@ -125,11 +128,14 @@ If MAP is an array, store nil at the index KEY.
 
 MAP can be a list, hash-table or array."
   (declare (debug t))
-  `(progn
-     (map--dispatch (m ,map m)
-       :list (setq ,map (map--delete-alist m ,key))
-       :hash-table (remhash ,key m)
-       :array (map--delete-array m ,key))))
+  (let ((symbol (symbolp map)))
+    `(progn
+       (map--dispatch (m ,map m)
+         :list (if ,symbol
+                   (setq ,map (map--delete-alist m ,key))
+                 (error "Literal lists are not allowed, %s must be a symbol" ',map))
+         :hash-table (remhash ,key m)
+         :array (map--delete-array m ,key)))))
 
 (defun map-nested-elt (map keys &optional default)
   "Traverse MAP using KEYS and return the looked up value or DEFAULT if nil.