mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Don't let cconv_convert insert a nil argument into a `setq' form.
Fixes bug#21983. * lisp/emacs-lisp/cconv.el (cconv-convert): Don't silently insert a nil last argument into a `setq' when there're an odd number of args. This enables the byte compiler to issue a message in this case.
This commit is contained in:
parent
2b8154f2bc
commit
74e5d4e21e
1 changed files with 6 additions and 4 deletions
|
|
@ -477,17 +477,19 @@ places where they originally did not directly appear."
|
|||
(while forms
|
||||
(let* ((sym (pop forms))
|
||||
(sym-new (or (cdr (assq sym env)) sym))
|
||||
(value (cconv-convert (pop forms) env extend)))
|
||||
(value-in-list
|
||||
(and forms
|
||||
(list (cconv-convert (pop forms) env extend)))))
|
||||
(push (pcase sym-new
|
||||
((pred symbolp) `(setq ,sym-new ,value))
|
||||
(`(car-safe ,iexp) `(setcar ,iexp ,value))
|
||||
((pred symbolp) `(setq ,sym-new ,@value-in-list))
|
||||
(`(car-safe ,iexp) `(setcar ,iexp ,@value-in-list))
|
||||
;; This "should never happen", but for variables which are
|
||||
;; mutated+captured+unused, we may end up trying to `setq'
|
||||
;; on a closed-over variable, so just drop the setq.
|
||||
(_ ;; (byte-compile-report-error
|
||||
;; (format "Internal error in cconv of (setq %s ..)"
|
||||
;; sym-new))
|
||||
value))
|
||||
(car value-in-list)))
|
||||
prognlist)))
|
||||
(if (cdr prognlist)
|
||||
`(progn . ,(nreverse prognlist))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue