[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24255: 25.1; incorrect edebug spec for cl-defun
From: |
Gemini Lasswell |
Subject: |
bug#24255: 25.1; incorrect edebug spec for cl-defun |
Date: |
Fri, 06 Oct 2017 11:07:04 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.60 (gnu/linux) |
Here is a revised Edebug spec for cl-defun which supports
destructuring. I've included dotted destructuring since cl-defun
supports it, even though Edebug doesn't currently handle dotted
destructuring correctly due to bug#6415.
>From 09ff5fa398bc1061fd5a8ee1bb880f2d6f8035ba Mon Sep 17 00:00:00 2001
From: Gemini Lasswell <gazally@runbox.com>
Date: Fri, 6 Oct 2017 09:55:55 -0700
Subject: [PATCH] Fix Edebug spec for cl-defun (bug#24255)
* lisp/emacs-lisp/cl-macs.el: Modify the Edebug spec for
`cl-lambda-list' to support destructuring argument lists.
(cl-defun, cl-defmacro): Fix spelling errors in docstrings.
* lisp/textmodes/rst.el: Remove alternate version of Edebug
specs for `cl-lambda-list' and `cl-type-spec'.
---
lisp/emacs-lisp/cl-macs.el | 32 +++++++++++++++++++++++---------
lisp/textmodes/rst.el | 16 ----------------
2 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 32ba0ac309..cb4c7ad93c 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -193,20 +193,34 @@ cl-declarations-or-string
(&or stringp cl-declarations))
(def-edebug-spec cl-lambda-list
- (([&rest arg]
+ (([&rest cl-lambda-arg]
[&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
- [&optional ["&rest" arg]]
+ [&optional ["&rest" cl-lambda-arg]]
[&optional ["&key" [cl-&key-arg &rest cl-&key-arg]
&optional "&allow-other-keys"]]
[&optional ["&aux" &rest
&or (symbolp &optional def-form) symbolp]]
- )))
+ . [&or arg nil])))
(def-edebug-spec cl-&optional-arg
- (&or (arg &optional def-form arg) arg))
+ (&or (cl-lambda-arg &optional def-form arg) arg))
(def-edebug-spec cl-&key-arg
- (&or ([&or (symbolp arg) arg] &optional def-form arg) arg))
+ (&or ([&or (symbolp cl-lambda-arg) arg] &optional def-form arg) arg))
+
+(def-edebug-spec cl-lambda-arg
+ (&or arg cl-lambda-list1))
+
+(def-edebug-spec cl-lambda-list1
+ (([&optional ["&whole" arg]] ;; only allowed at lower levels
+ [&rest cl-lambda-arg]
+ [&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
+ [&optional ["&rest" cl-lambda-arg]]
+ [&optional ["&key" cl-&key-arg &rest cl-&key-arg
+ &optional "&allow-other-keys"]]
+ [&optional ["&aux" &rest
+ &or (symbolp &optional def-form) symbolp]]
+ . [&or arg nil])))
(def-edebug-spec cl-type-spec sexp)
@@ -336,8 +350,8 @@ cl-defun
[&key (([KEYWORD] VAR) [INITFORM [SVAR]])... [&allow-other-keys]]
[&aux (VAR [INITFORM])...])
-VAR maybe be replaced recursively with an argument list for
-destructing, `&whole' is supported within these sublists. If
+VAR may be replaced recursively with an argument list for
+destructuring, `&whole' is supported within these sublists. If
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
written simply `VAR'. See the Info node `(cl)Argument Lists' for
more details.
@@ -430,8 +444,8 @@ cl-defmacro
[&aux (VAR [INITFORM])...]
[&environment VAR])
-VAR maybe be replaced recursively with an argument list for
-destructing, `&whole' is supported within these sublists. If
+VAR may be replaced recursively with an argument list for
+destructuring, `&whole' is supported within these sublists. If
SVAR, INITFORM, and KEYWORD are all omitted, then `(VAR)' may be
written simply `VAR'. See the Info node `(cl)Argument Lists' for
more details.
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index 5534294738..404b8eb04d 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -109,22 +109,6 @@
(def-edebug-spec push
(&or [form symbolp] [form gv-place]))
-;; Correct wrong declaration. This still doesn't support dotted destructuring
-;; though.
-(def-edebug-spec cl-lambda-list
- (([&rest cl-macro-arg]
- [&optional ["&optional" cl-&optional-arg &rest cl-&optional-arg]]
- [&optional ["&rest" arg]]
- [&optional ["&key" [cl-&key-arg &rest cl-&key-arg]
- &optional "&allow-other-keys"]]
- [&optional ["&aux" &rest
- &or (symbolp &optional def-form) symbolp]]
- )))
-
-;; Add missing declaration.
-(def-edebug-spec cl-type-spec sexp) ;; This is not exactly correct but good
- ;; enough.
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Support for `testcover'
--
2.14.1
- bug#24255: 25.1; incorrect edebug spec for cl-defun,
Gemini Lasswell <=