]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow destructuring in &aux sections when using edebug (Bug#40431)
authorPhilipp Stephani <phst@google.com>
Wed, 10 Jun 2020 13:34:41 +0000 (15:34 +0200)
committerPhilipp Stephani <phst@google.com>
Wed, 10 Jun 2020 13:34:41 +0000 (15:34 +0200)
* lisp/emacs-lisp/cl-macs.el (cl-lambda-list, cl-lambda-list1)
(cl-macro-list, cl-macro-list1): Allow arbitrary 'cl-lambda'
arguments in the &aux section.

* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-aux-edebug): New
regression test.

lisp/emacs-lisp/cl-macs.el
test/lisp/emacs-lisp/cl-macs-tests.el

index 3317c580028636dd4c84cef55e18e1f3f36e6c55..45e814e859c385a477491a2f37ccc8ebe16948b9 100644 (file)
@@ -199,7 +199,7 @@ The name is made by appending a number to PREFIX, default \"T\"."
     [&optional ["&key" [cl-&key-arg &rest cl-&key-arg]
                &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
-               &or (symbolp &optional def-form) symbolp]]
+               &or (cl-lambda-arg &optional def-form) cl-lambda-arg]]
     . [&or arg nil])))
 
 (def-edebug-spec cl-&optional-arg
@@ -219,7 +219,7 @@ The name is made by appending a number to PREFIX, default \"T\"."
     [&optional ["&key" cl-&key-arg &rest cl-&key-arg
                 &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
-                &or (symbolp &optional def-form) symbolp]]
+                &or (cl-lambda-arg &optional def-form) cl-lambda-arg]]
     . [&or arg nil])))
 
 (def-edebug-spec cl-type-spec sexp)
@@ -402,7 +402,7 @@ and BODY is implicitly surrounded by (cl-block NAME ...).
                             arg]]
                &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
-               &or (symbolp &optional def-form) symbolp]]
+               &or (cl-lambda-arg &optional def-form) cl-lambda-arg]]
     [&optional "&environment" arg]
     )))
 
@@ -421,7 +421,7 @@ and BODY is implicitly surrounded by (cl-block NAME ...).
                             arg]]
                &optional "&allow-other-keys"]]
     [&optional ["&aux" &rest
-               &or (symbolp &optional def-form) symbolp]]
+               &or (cl-lambda-arg &optional def-form) cl-lambda-arg]]
     . [&or arg nil])))
 
 ;;;###autoload
index 24bbad0cc6b5e3d4da9116b12f72280d330dd8d9..29ae95e2771a5120bf3cf6ec2db4a3eafbfa290c 100644 (file)
@@ -601,4 +601,13 @@ collection clause."
                    collect y into result1
                    finally return  (equal (nreverse result) result1))))
 
+(ert-deftest cl-macs-aux-edebug ()
+  "Check that Bug#40431 is fixed."
+  (with-temp-buffer
+    (prin1 '(cl-defun cl-macs-aux-edebug-test-fun (&aux ((a . b) '(1 . 2)))
+              (list a b))
+           (current-buffer))
+    ;; Just make sure the function can be instrumented.
+    (edebug-defun)))
+
 ;;; cl-macs-tests.el ends here