Package: emacs;
Reported by: Geoff Gole <geoffgole <at> gmail.com>
Date: Sun, 13 Jun 2010 18:06:01 UTC
Severity: normal
Tags: confirmed, patch
Merged with 6566, 15587, 24885
Found in versions 23.1.50, 23.2, 26.0.50
Done: Gemini Lasswell <gazally <at> runbox.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Gemini Lasswell <gazally <at> runbox.com> Cc: tracker <at> debbugs.gnu.org Subject: bug#24885: closed (26.0.50; edebug-eval-defun fails on a cl-destructuring-bind with cons cell) Date: Sun, 26 Nov 2017 23:03:03 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 26 Nov 2017 15:02:27 -0800 with message-id <871skkr6d8.fsf <at> runbox.com> and subject line Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros has caused the debbugs.gnu.org bug report #6415, regarding 26.0.50; edebug-eval-defun fails on a cl-destructuring-bind with cons cell to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 6415: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6415 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Alex <agrambot <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 26.0.50; edebug-eval-defun fails on a cl-destructuring-bind with cons cell Date: Sat, 05 Nov 2016 12:49:52 -0600Attempting to C-u C-M-x the following function produces an error: (defun test () (cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) Backtrace: Debugger entered--Lisp error: (invalid-read-syntax "Dotted spec required.") signal(invalid-read-syntax ("Dotted spec required.")) edebug-syntax-error("Dotted spec required.") apply(edebug-syntax-error "Dotted spec required.") edebug-no-match((b (190 . 192) . 193) "Dotted spec required.") edebug-match-specs((b (190 . 192) . 193) ([&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or (symbolp cl-macro-arg) arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg]) edebug-match-specs) edebug-match-specs((b (190 . 192) . 193) ([&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or (symbolp cl-macro-arg) arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg]) edebug-match-specs) edebug-match-specs((b (190 . 192) . 193) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or (symbolp cl-macro-arg) arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg]) edebug-match-specs) edebug-match-sublist((b (190 . 192) . 193) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or (symbolp cl-macro-arg) arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg])) edebug-match-list((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or (symbolp cl-macro-arg) arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg])) edebug-match-one-spec((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or (symbolp cl-macro-arg) arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg])) edebug-match-specs((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) (([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or ... arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg])) edebug-match-specs) edebug-match((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) (([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or (cl-macro-arg &optional def-form cl-macro-arg) arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ([&or ... arg] &optional def-form cl-macro-arg) arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or (symbolp &optional def-form) symbolp]] [&optional "&environment" arg]))) edebug-match-symbol((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) cl-macro-list) edebug-match-one-spec((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) cl-macro-list) edebug-match-specs((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) (cl-macro-list def-form cl-declarations def-body) edebug-match-specs) edebug-match-specs((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) ("cl-destructuring-bind" cl-macro-list def-form cl-declarations def-body) edebug-match-specs) edebug-match((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) ("cl-destructuring-bind" cl-macro-list def-form cl-declarations def-body)) edebug-make-form-wrapper((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) 163 216 ("cl-destructuring-bind" cl-macro-list def-form cl-declarations def-body)) edebug-defining-form((((a . b) (cons 1 2) (+ a b)) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) 163 217 ("cl-destructuring-bind" cl-macro-list def-form cl-declarations def-body)) edebug-form((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) edebug-match-form((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) edebug-match-symbol((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) form) edebug-match-one-spec((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) form) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (form) edebug-&rest-wrapper) edebug-&optional-wrapper((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (form) edebug-&rest-wrapper) edebug-&rest-wrapper((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (form) edebug-&rest-wrapper) edebug-match-&rest((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (form)) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (&rest form) edebug-match-specs) edebug-match((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (&rest form)) edebug-match-def-body((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) edebug-match-symbol((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) def-body) edebug-match-one-spec((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) def-body) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (def-body) edebug-match-specs) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) ([&optional ("interactive" interactive)] def-body) edebug-match-specs) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) ([&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body) edebug-match-specs) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) ([&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body) edebug-match-specs) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body) edebug-match-specs) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) (name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body) edebug-match-specs) edebug-match-specs((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) ("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body) edebug-match-specs) edebug-match-sublist((((cl-destructuring-bind (a . b) (cons 1 2) (+ a b))) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218) ("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body)) edebug-match-list((((defun test nil (cl-destructuring-bind (a . b) (cons 1 2) (+ a b)))) (146 (147 . 152) (153 . 157) (158 . 160) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) ("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body)) edebug-match-one-spec((((defun test nil (cl-destructuring-bind (a . b) (cons 1 2) (+ a b)))) (146 (147 . 152) (153 . 157) (158 . 160) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) ("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body)) edebug-match-specs((((defun test nil (cl-destructuring-bind (a . b) (cons 1 2) (+ a b)))) (146 (147 . 152) (153 . 157) (158 . 160) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) (("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body)) edebug-match-specs) edebug-match((((defun test nil (cl-destructuring-bind (a . b) (cons 1 2) (+ a b)))) (146 (147 . 152) (153 . 157) (158 . 160) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) (("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body))) edebug-make-form-wrapper((((defun test nil (cl-destructuring-bind (a . b) (cons 1 2) (+ a b)))) (146 (147 . 152) (153 . 157) (158 . 160) (163 (164 . 185) (186 (187 . 188) (190 . 192) . 193) (194 (195 . 199) (200 . 201) (202 . 203) . 204) (209 (210 . 211) (212 . 213) (214 . 215) . 216) . 217) . 218)) 146 217 (("defun" name lambda-list [&optional stringp] [&optional ("declare" &rest sexp)] [&optional ("interactive" interactive)] def-body))) edebug-read-and-maybe-wrap-form1() edebug-read-and-maybe-wrap-form() edebug-read-top-level-form() edebug-eval-defun((4)) apply(edebug-eval-defun (4)) eval-defun((4)) funcall-interactively(eval-defun (4)) call-interactively(eval-defun nil nil) command-execute(eval-defun) In GNU Emacs 26.0.50.3 (x86_64-pc-linux-gnu, GTK+ Version 3.22.2) of 2016-11-04 built on lylat Repository revision: 44c34c2ed30007fbcb4d33f3c2b390cc17a5b520 Windowing system distributor 'The X.Org Foundation', version 11.0.11804000 System Description: Debian GNU/Linux testing (stretch)
[Message part 3 (message/rfc822, inline)]
From: Gemini Lasswell <gazally <at> runbox.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 6415-done <at> debbugs.gnu.org, Steve Yegge <stevey <at> google.com> Subject: Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros Date: Sun, 26 Nov 2017 15:02:27 -0800Gemini Lasswell <gazally <at> runbox.com> writes: > Here's a new patch for this bug, based on the ideas in Steve's patch. I've pushed this patch to emacs-26.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.