Consolidate existing warnings about unused return values
Move the warning about unused return values from calls to side-effect-free functions from the source-level optimiser to the code generator, where it can be unified with the special-purpose warning about unused values from `mapcar`. This change also cures spurious duplicate warnings about the same code, makes the warnings amenable to suppression through `with-suppressed-warnings`, and now warns about some unused values that weren't caught before. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Move warning away from here. * lisp/emacs-lisp/byte-run.el (with-suppressed-warnings): * lisp/emacs-lisp/bytecomp.el (byte-compile-warnings): Doc string updates. (byte-compile-form): Put the new warnings here. (byte-compile-normal-call): Move mapcar warning away from here. * lisp/emacs-lisp/bytecomp.el (byte-compile-ignore): Compile args to `ignore` for value to avoid unused-value warnings, and then discard the generated values immediately thereafter. Mostly this does not affect the generated code but in rare cases it might result in slightly worse code. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-test--with-suppressed-warnings): Adapt test.
This commit is contained in:
parent
10b58633b5
commit
aef996cd34
4 changed files with 36 additions and 22 deletions
|
@ -506,13 +506,7 @@ for speeding up processing.")
|
|||
((guard (when for-effect
|
||||
(if-let ((tmp (byte-opt--fget fn 'side-effect-free)))
|
||||
(or byte-compile-delete-errors
|
||||
(eq tmp 'error-free)
|
||||
(progn
|
||||
(byte-compile-warn-x
|
||||
form
|
||||
"value returned from %s is unused"
|
||||
form)
|
||||
nil)))))
|
||||
(eq tmp 'error-free)))))
|
||||
(byte-compile-log " %s called for effect; deleted" fn)
|
||||
(byte-optimize-form (cons 'progn (cdr form)) t))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue