Subject: bug#6566: closed (Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 26 Nov 2017 23:03:02 +0000

Your bug report

#6415: 23.2; error: (invalid-read-syntax "Dotted spec required.")

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
6415: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6415
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros
From: Gemini Lasswell <[email-masked]>
To: Stefan Monnier <[email-masked]>
Cc: [email-masked], Steve Yegge <[email-masked]>
Date: Sun, 26 Nov 2017 15:02:27 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Gemini Lasswell <[email-masked]> 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.

Subject: 23.2; error: (invalid-read-syntax "Dotted spec required.")
From: Leo <[email-masked]>
To: [email-masked]
Date: Mon, 05 Jul 2010 13:52:17 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

To reproduce:

C-u C-M-x to edebug the following example function

(defun test ()
  (destructuring-bind (beg . end)
      '(1 . 2)))

Should see a backtrace as attached to the end of this report.

In GNU Emacs 23.2.9 of 2010-06-26 on Victoria.local

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((end (44 . 48) . 49) "Dotted spec required.")
  edebug-match-specs((end (44 . 48) . 49) ([&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg]) edebug-match-specs)
  edebug-match-specs((end (44 . 48) . 49) ([&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg]) edebug-match-specs)
  edebug-match-specs((end (44 . 48) . 49) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg]) edebug-match-specs)
  edebug-match-sublist((end (44 . 48) . 49) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg]))
  edebug-match-list((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg]))
  edebug-match-one-spec((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) ([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg]))
  edebug-match-specs((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) (([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg])) edebug-match-specs)
  edebug-match((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) (([&optional "&environment" arg] [&rest cl-macro-arg] [&optional ["&optional" &rest &or ... arg]] [&optional [[&or "&rest" "&body"] cl-macro-arg]] [&optional ["&key" [&rest [&or ... arg]] &optional "&allow-other-keys"]] [&optional ["&aux" &rest &or ... symbolp]] [&optional "&environment" arg])))
  edebug-match-symbol((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) cl-macro-list)
  edebug-match-one-spec((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) cl-macro-list)
  edebug-match-specs((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) (cl-macro-list def-form cl-declarations def-body) edebug-match-specs)
  edebug-match-specs((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) ("destructuring-bind" cl-macro-list def-form cl-declarations def-body) edebug-match-specs)
  edebug-match((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) ("destructuring-bind" cl-macro-list def-form cl-declarations def-body))
  edebug-make-form-wrapper((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) 18 64 ("destructuring-bind" cl-macro-list def-form cl-declarations def-body))
  edebug-defining-form((((beg . end) (quote ...)) (38 (39 . 42) (44 . 48) . 49) (56 (56 . 57) (57 ... ... . 64) . 64) . 65) 18 65 ("destructuring-bind" cl-macro-list def-form cl-declarations def-body))
  edebug-form((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66))
  edebug-match-form((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66))
  edebug-match-symbol((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) form)
  edebug-match-one-spec((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) form)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (form) edebug-&rest-wrapper)
  byte-code("\304	\n#.\305\207" [cursor specs remainder-handler result edebug-match-specs nil] 4)
  edebug-&optional-wrapper((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (form) edebug-&rest-wrapper)
  edebug-&rest-wrapper((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (form) edebug-&rest-wrapper)
  edebug-match-&rest((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (form))
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (&rest form) edebug-match-specs)
  edebug-match((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (&rest form))
  edebug-match-def-body((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66))
  edebug-match-symbol((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) def-body)
  edebug-match-one-spec((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) def-body)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (def-body) edebug-match-specs)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) ([&optional ("interactive" interactive)] def-body) edebug-match-specs)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) ([&optional stringp] [&optional ("interactive" interactive)] def-body) edebug-match-specs)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body) edebug-match-specs)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) (name lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body) edebug-match-specs)
  edebug-match-specs((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) ("defun" name lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body) edebug-match-specs)
  edebug-match-sublist((((destructuring-bind ... ...)) (18 (19 . 37) (38 ... ... . 49) (56 ... ... . 64) . 65) . 66) ("defun" name lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body))
  edebug-match-list((((defun test nil ...)) (1 (2 . 7) (8 . 12) (13 . 15) (18 ... ... ... . 65) . 66)) ("defun" name lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body))
  edebug-match-one-spec((((defun test nil ...)) (1 (2 . 7) (8 . 12) (13 . 15) (18 ... ... ... . 65) . 66)) ("defun" name lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body))
  edebug-match-specs((((defun test nil ...)) (1 (2 . 7) (8 . 12) (13 . 15) (18 ... ... ... . 65) . 66)) (("defun" name lambda-list [&optional stringp] [&optional ...] def-body)) edebug-match-specs)
  edebug-match((((defun test nil ...)) (1 (2 . 7) (8 . 12) (13 . 15) (18 ... ... ... . 65) . 66)) (("defun" name lambda-list [&optional stringp] [&optional ...] def-body)))
  edebug-make-form-wrapper((((defun test nil ...)) (1 (2 . 7) (8 . 12) (13 . 15) (18 ... ... ... . 65) . 66)) 1 65 (("defun" name lambda-list [&optional stringp] [&optional ...] def-body)))
  edebug-read-and-maybe-wrap-form1()
  byte-code("\301 .\302\207" [result edebug-read-and-maybe-wrap-form1 nil] 1)
  edebug-read-and-maybe-wrap-form()
  edebug-read-top-level-form()
  eval-defun((4))
  call-interactively(eval-defun nil nil)