Improve check for misleading 'cl-case' cases (Bug#57915).
* lisp/emacs-lisp/cl-macs.el (cl-case): Check that the case is of the form (quote FOO), not just (quote). * test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-no-warning): New unit test.
This commit is contained in:
parent
f735aa0f39
commit
a71de4b52d
2 changed files with 12 additions and 1 deletions
|
@ -792,7 +792,7 @@ compared by `eql'.
|
|||
(macroexp-warn-and-return
|
||||
"Case nil will never match"
|
||||
nil 'suspicious))
|
||||
((and (consp (car c)) (not (cddar c))
|
||||
((and (consp (car c)) (cdar c) (not (cddar c))
|
||||
(memq (caar c) '(quote function)))
|
||||
(macroexp-warn-and-return
|
||||
(format-message
|
||||
|
|
|
@ -792,4 +792,15 @@ constructs."
|
|||
(should (equal messages
|
||||
(concat "Warning: " message "\n"))))))))))
|
||||
|
||||
(ert-deftest cl-case-no-warning ()
|
||||
"Test that `cl-case' and `cl-ecase' don't warn in some valid cases.
|
||||
See Bug#57915."
|
||||
(dolist (case '(quote (quote) function (function)))
|
||||
(dolist (macro '(cl-case cl-ecase))
|
||||
(let ((form `(,macro val (,case 1))))
|
||||
(ert-info ((prin1-to-string form) :prefix "Form: ")
|
||||
(ert-with-message-capture messages
|
||||
(macroexpand form)
|
||||
(should (string-empty-p messages))))))))
|
||||
|
||||
;;; cl-macs-tests.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue