[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master e28c990: (cl-defstruct): Improve error message for
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master e28c990: (cl-defstruct): Improve error message for slots w/o value (bug#25312) |
Date: |
Tue, 3 Jan 2017 21:07:50 +0000 (UTC) |
branch: master
commit e28c99082ac03b06600b8b943704e0786c8887f9
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
(cl-defstruct): Improve error message for slots w/o value (bug#25312)
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Don't signal an error but
emit a warning for those coders who forgot to put a default value in
their slot.
---
lisp/emacs-lisp/cl-macs.el | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 945da1f..40342f3 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2745,7 +2745,23 @@ non-nil value, that slot cannot be set via `setf'.
`(nth ,pos cl-x))))
forms)
(when (cl-oddp (length desc))
- (error "Invalid options for slot %s in %s" slot name))
+ (push
+ (macroexp--warn-and-return
+ (format "Missing value for option `%S' of slot `%s' in
struct %s!"
+ (car (last desc)) slot name)
+ 'nil)
+ forms)
+ (when (and (keywordp (car defaults))
+ (not (keywordp (car desc))))
+ (let ((kw (car defaults)))
+ (push
+ (macroexp--warn-and-return
+ (format " I'll take `%s' to be an option rather than a
default value."
+ kw)
+ 'nil)
+ forms)
+ (push kw desc)
+ (setcar defaults nil))))
(if (plist-get desc ':read-only)
(push `(gv-define-expander ,accessor
(lambda (_cl-do _cl-x)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master e28c990: (cl-defstruct): Improve error message for slots w/o value (bug#25312),
Stefan Monnier <=