diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-03-17 10:07:35 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-03-17 10:07:35 -0400 |
commit | 693484d36b1326aebd895314570167ca8da87d69 (patch) | |
tree | 05234799be6b91ce12f5861eddeb7b6836dfc444 | |
parent | e55ceca8c787c84ed43e5be3c6dbe3d7aad14f8b (diff) | |
download | emacs-693484d36b1326aebd895314570167ca8da87d69.tar.gz |
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Warn suspicious args
-rw-r--r-- | lisp/emacs-lisp/cl-generic.el | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index b44dda6f9d4..7b11c0c8159 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -262,6 +262,16 @@ DEFAULT-BODY, if present, is used as the body of a default method. (declarations nil) (methods ()) (options ()) + (warnings + (let ((nonsymargs + (delq nil (mapcar (lambda (arg) (unless (symbolp arg) arg)) + args)))) + (when nonsymargs + (list + (macroexp-warn-and-return + (format "Non-symbol arguments to cl-defgeneric: %s" + (mapconcat #'prin1-to-string nonsymargs "")) + nil nil nil nonsymargs))))) next-head) (while (progn (setq next-head (car-safe (car options-and-methods))) (or (keywordp next-head) @@ -284,6 +294,7 @@ DEFAULT-BODY, if present, is used as the body of a default method. (setq name (gv-setter (cadr name)))) `(prog1 (progn + ,@warnings (defalias ',name (cl-generic-define ',name ',args ',(nreverse options)) ,(if (consp doc) ;An expression rather than a constant. |