From unknown Mon Jun 23 13:11:25 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6415: 23.1.50; edebug-eval-defun errors on dotted pair in some macros Resent-From: Geoff Gole Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 13 Jun 2010 18:06:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 6415 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 6415@debbugs.gnu.org X-Debbugs-Original-To: emacs-pretest-bug@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.127645230825537 (code B ref -1); Sun, 13 Jun 2010 18:06:01 +0000 Received: (at submit) by debbugs.gnu.org; 13 Jun 2010 18:05:08 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONrYR-0006dq-K3 for submit@debbugs.gnu.org; Sun, 13 Jun 2010 14:05:08 -0400 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONpMm-0005ay-Qs for submit@debbugs.gnu.org; Sun, 13 Jun 2010 11:44:57 -0400 Received: from mx10.gnu.org ([199.232.76.166]:59499) by fencepost.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONpMh-00005B-GH for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:44:52 -0400 Received: from eggs.gnu.org ([140.186.70.92]:50938) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1ONp4d-0004LR-7Q for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:26:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ONp4b-00047C-GZ for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:26:10 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID, T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.3.1 Received: from mail-gw0-f41.google.com ([74.125.83.41]:37048) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONp4b-000478-EN for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:26:09 -0400 Received: by gwaa18 with SMTP id a18so1680675gwa.0 for ; Sun, 13 Jun 2010 08:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=xcHBp+X4Og3Q7Zz3V/qo1euuuaikz/B5AfwtHjlrJyo=; b=Qc1RU70QvucvLhh/67h5shyJ4T9sqGK6qukg3YjB470VdWVQQM4n9ljftvwaK0og3w kDZ9Gd86Phnxx495BwK9wNZ5vYPN/XL6BfTtajbtTxnTKLlTh8c0MOEpJdRKHMmrHiRd 6gVa2L3lb7vB+l90e1m5FA2IOXYTVulhElzlc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=t00I0mfa5MwEzY6KxRDq19VUrlsNXuRK27rPJ4YkB8pnK6cL/q2+3nTy4m4mOCFrph 1Wp0Fb6W4I8KJ2tXQTm5jfj/iOTURlMhybTTSFV+JoWcGWvcQXhhMR1Y/CysJW6SqW6N W7dZ8KX4/80sArjXXJA5dhDXq0Bh7y28JotcY= MIME-Version: 1.0 Received: by 10.229.250.149 with SMTP id mo21mr1752045qcb.250.1276442767614; Sun, 13 Jun 2010 08:26:07 -0700 (PDT) Received: by 10.229.246.206 with HTTP; Sun, 13 Jun 2010 08:26:07 -0700 (PDT) Date: Sun, 13 Jun 2010 23:26:07 +0800 Message-ID: From: Geoff Gole Content-Type: text/plain; charset=ISO-8859-1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-Spam-Score: -5.9 (-----) X-Mailman-Approved-At: Sun, 13 Jun 2010 14:05:06 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.9 (-----) When presented with a reasonable defun form containing an unevaluated dotted pair, edebug-eval-defun fails with Invalid read syntax: "Dotted spec required." I *think* that this is an error in the cl.el debug specs and not edebug itself. Unfortunately that's hard to verify by stepping edebug.el as said debug specs are largely incomprehensible. To reproduce: emacs -Q insert (defun bug () (destructuring-bind (x . y))) C-u C-M-x GNU Emacs 23.1.50.1 (i686-pc-linux-gnu, GTK+ Version 2.12.11) of 2009-07-30 From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 05 14:55:44 2010 Received: (at control) by debbugs.gnu.org; 5 Jul 2010 18:55:44 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OVqpT-0005Wq-QT for submit@debbugs.gnu.org; Mon, 05 Jul 2010 14:55:44 -0400 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OVqpR-0005Wf-S4 for control@debbugs.gnu.org; Mon, 05 Jul 2010 14:55:42 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.69) (envelope-from ) id 1OVqpM-00018p-Dx; Mon, 05 Jul 2010 14:55:36 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19506.10920.237370.293945@fencepost.gnu.org> Date: Mon, 5 Jul 2010 14:55:36 -0400 From: Glenn Morris To: control Subject: control X-Attribution: GM X-Mailer: VM (www.wonderworks.com/vm), GNU Emacs (www.gnu.org/software/emacs) X-Hue: blue X-Ran: _^D6`.n*"473<~z9_k3zcNT.&VUqg,L><1-C5CI?qj_;N+j(RUDNjCCbX]+_?U20tB^rc] X-Debbugs-No-Ack: yes X-Spam-Score: -5.1 (-----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.1 (-----) merge 6415 6566 From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 21 16:38:59 2011 Received: (at control) by debbugs.gnu.org; 21 Sep 2011 20:38:59 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R6TZJ-0006nj-Js for submit@debbugs.gnu.org; Wed, 21 Sep 2011 16:38:59 -0400 Received: from hermes.netfonds.no ([80.91.224.195]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R6TZA-0006nQ-Fn for control@debbugs.gnu.org; Wed, 21 Sep 2011 16:38:50 -0400 Received: from cm-84.215.51.58.getinternet.no ([84.215.51.58] helo=stories.gnus.org) by hermes.netfonds.no with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1R6TYn-0006D0-Ny for control@debbugs.gnu.org; Wed, 21 Sep 2011 22:38:25 +0200 Date: Wed, 21 Sep 2011 22:34:59 +0200 Message-Id: To: control@debbugs.gnu.org From: Lars Magne Ingebrigtsen Subject: control message for bug #6415 X-MailScanner-ID: 1R6TYn-0006D0-Ny X-Netfonds-MailScanner: Found to be clean X-Netfonds-MailScanner-From: larsi@gnus.org MailScanner-NULL-Check: 1317242305.93281@bJWJkwMaWSrCocSiSeKUlQ X-Spam-Status: No X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) tags 6415 confirmed From unknown Mon Jun 23 13:11:25 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6415: 23.2; error: (invalid-read-syntax "Dotted spec required.") Resent-From: Lars Magne Ingebrigtsen Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Sep 2011 20:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6415 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed To: Leo Cc: 6415@debbugs.gnu.org Received: via spool by 6415-submit@debbugs.gnu.org id=B6415.131663778826696 (code B ref 6415); Wed, 21 Sep 2011 20:44:02 +0000 Received: (at 6415) by debbugs.gnu.org; 21 Sep 2011 20:43:08 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R6TdK-0006w5-L6 for submit@debbugs.gnu.org; Wed, 21 Sep 2011 16:43:07 -0400 Received: from hermes.netfonds.no ([80.91.224.195]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R6TdF-0006vN-LP for 6415@debbugs.gnu.org; Wed, 21 Sep 2011 16:43:04 -0400 Received: from cm-84.215.51.58.getinternet.no ([84.215.51.58] helo=stories.gnus.org) by hermes.netfonds.no with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1R6Tcs-0006JV-KD; Wed, 21 Sep 2011 22:42:38 +0200 From: Lars Magne Ingebrigtsen In-Reply-To: (Leo's message of "Mon, 05 Jul 2010 13:52:17 +0100") Date: Wed, 21 Sep 2011 22:34:57 +0200 Message-ID: References: User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux) X-Now-Playing: Oneohtrix Point Never's _Returnal_: "Describing Bodies" MIME-Version: 1.0 Content-Type: text/plain X-MailScanner-ID: 1R6Tcs-0006JV-KD X-Netfonds-MailScanner: Found to be clean X-Netfonds-MailScanner-From: larsi@gnus.org MailScanner-NULL-Check: 1317242558.68801@H15tWjWAtid7QYR6HJeCJA X-Spam-Status: No X-Spam-Score: -2.6 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Leo writes: > 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.") I can confirm that this bug is still present in Emacs 24. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ From unknown Mon Jun 23 13:11:25 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros References: In-Reply-To: Resent-From: Steve Yegge Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Sep 2011 17:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6415 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed To: 6415@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.13170578591230 (code B ref -1); Mon, 26 Sep 2011 17:25:01 +0000 Received: (at submit) by debbugs.gnu.org; 26 Sep 2011 17:24:19 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R8Eug-0000Jm-7i for submit@debbugs.gnu.org; Mon, 26 Sep 2011 13:24:19 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R8EpJ-0000Bk-Kw for submit@debbugs.gnu.org; Mon, 26 Sep 2011 13:18:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R8EoZ-0001br-MA for submit@debbugs.gnu.org; Mon, 26 Sep 2011 13:18:00 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:33302) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8EoZ-0001bn-KX for submit@debbugs.gnu.org; Mon, 26 Sep 2011 13:17:59 -0400 Received: from eggs.gnu.org ([140.186.70.92]:39449) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8EoY-0002hE-De for bug-gnu-emacs@gnu.org; Mon, 26 Sep 2011 13:17:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R8EoW-0001bK-Ea for bug-gnu-emacs@gnu.org; Mon, 26 Sep 2011 13:17:58 -0400 Received: from smtp-out.google.com ([74.125.121.67]:48486) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8EoW-0001b6-30 for bug-gnu-emacs@gnu.org; Mon, 26 Sep 2011 13:17:56 -0400 Received: from hpaq11.eem.corp.google.com (hpaq11.eem.corp.google.com [172.25.149.11]) by smtp-out.google.com with ESMTP id p8QHHsmx008409 for ; Mon, 26 Sep 2011 10:17:54 -0700 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1317057474; bh=CmxAahY8Zn8GGjJ1ebHUC0xfehM=; h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=Rl+V8P0RF+LzmktnEWd7lblifywMCrlY3obMsVMok5tGuBDP02AhrL2617cqpBIFP wv/VYfim1/3IlFz0uYTUQ== DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=dkim-signature:mime-version:date:message-id:subject:from:to: content-type:x-system-of-record; b=qselpFresaSO8l/8NhZ6op6YLNUUnmgQqYHMCdhbuntGc8T//9H5vu8KZTQlhLh3k cXLvr+oZP/YYdDfj8VCBQ== Received: from yia13 (yia13.prod.google.com [10.243.65.13]) by hpaq11.eem.corp.google.com with ESMTP id p8QHEECP007192 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Mon, 26 Sep 2011 10:17:53 -0700 Received: by yia13 with SMTP id 13so5699016yia.13 for ; Mon, 26 Sep 2011 10:17:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=beta; h=mime-version:date:message-id:subject:from:to:content-type; bh=VL+4WVaHGxVZ8/V8axrxfnMGTVzzuJ5AkvBDc7RJNx4=; b=HGKVsgmPYAcZgJp+vg8IwkMAbU2nGL0kTVwQ09j8THfFLRvhDAKc6nFl9Ap7jvEH8t aGYEK0LhK4lS7FjAbujg== Received: by 10.150.244.7 with SMTP id r7mr6733855ybh.390.1317057473127; Mon, 26 Sep 2011 10:17:53 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.244.7 with SMTP id r7mr6733848ybh.390.1317057472829; Mon, 26 Sep 2011 10:17:52 -0700 (PDT) Received: by 10.151.43.13 with HTTP; Mon, 26 Sep 2011 10:17:52 -0700 (PDT) Date: Mon, 26 Sep 2011 10:17:52 -0700 Message-ID: From: Steve Yegge Content-Type: multipart/alternative; boundary=000e0cd28a08d11a9204addb563a X-System-Of-Record: true X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.0 (------) X-Mailman-Approved-At: Mon, 26 Sep 2011 13:24:17 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.0 (------) --000e0cd28a08d11a9204addb563a Content-Type: text/plain; charset=ISO-8859-1 ** Description There were two separate problems conspiring to create this bug. First, the edebug spec for `destructuring-bind' is incorrect. Its definition has three violations of the CL hyperspec for destructuring lambda lists: - it should not support the &environment keyword - it should support the &whole keyword - it should support dotted forms It so happens that the `cl-macro-list1' edebug-spec does all three of these things properly. The second problem is in edebug. The unification algorithm has improper or missing handling for dotted pairs in specs. I chose to add the handling to `edebug-match-specs' since it seemed to be the cleanest place to insert it. ** ChangeLog 2011-09-26 Steve Yegge * emacs-lisp/cl-specs.el: Fixed edebug-spec for `destructuring-bind' to allow dotted pairs in the destructuring lambda list. (Bug#6415) * emacs-lisp/edebug.el: Fixed edebug instrumentation of dotted pairs in edebug specifications for macros. (Bug#6415) ** The patch itself === modified file 'lisp/emacs-lisp/cl-specs.el' --- lisp/emacs-lisp/cl-specs.el 2011-02-11 03:54:12 +0000 +++ lisp/emacs-lisp/cl-specs.el 2011-09-26 16:37:19 +0000 @@ -90,7 +90,7 @@ ((&rest (symbol sexp)) cl-declarations body)) (def-edebug-spec destructuring-bind - (&define cl-macro-list def-form cl-declarations def-body)) + (&define cl-macro-list1 def-form cl-declarations def-body)) ;; Setf === modified file 'lisp/emacs-lisp/edebug.el' --- lisp/emacs-lisp/edebug.el 2011-08-21 17:43:31 +0000 +++ lisp/emacs-lisp/edebug.el 2011-09-26 16:44:39 +0000 @@ -1567,8 +1567,28 @@ (let ((edebug-dotted-spec t));; Containing spec list was dotted. (edebug-match-specs cursor (list specs) remainder-handler))) - ;; Is the form dotted? - ((not (listp (edebug-cursor-expressions cursor)));; allow nil + ;; Special handling for the tail of a dotted form. + ((and + ;; Is the cursor on the tail of a dotted form? + (not (listp (edebug-cursor-expressions cursor)));; allow nil + ;; When matching a dotted form such as (a b . c) against a + ;; spec list that looks like + ;; ([&rest ...] [&optional ...]+ . [&or arg nil]) + ;; ,e.g., the `cl-macro-list1' edebug-spec, then the &rest spec + ;; will consume everything up to the dotted tail (`c' in this + ;; example). At that point the spec list will look like so: + ;; ([&optional ...]+ . [&or arg nil]) + ;; We need to be able to consume zero or more [&optional ...] + ;; spec(s) without moving the cursor or signaling an error. + ;; The current continuation provides no state that tells us + ;; about the upcoming &optional specs, so we use lookahead: + + ;; Recurse normally if we're about to process an optional spec. + (not (eq (car specs) '&optional)) + ;; Recurse normally if the spec is a dotted list. + (not (and (listp specs) + (not (listp (cdr (last specs))))))) + ;; Otherwise we need to be on the tail of a dotted spec. (if (not edebug-dotted-spec) (edebug-no-match cursor "Dotted spec required.")) ;; Cancel dotted spec and dotted form. --000e0cd28a08d11a9204addb563a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
** Description

There were two separate proble= ms conspiring to create this bug.

First, the edebu= g spec for `destructuring-bind' is incorrect.
Its definition = has three violations of the CL hyperspec for
destructuring lambda lists:

=A0 - it should n= ot support the &environment keyword
=A0 - it should support t= he &whole keyword
=A0 - it should support dotted forms
<= div>
It so happens that the `cl-macro-list1' edebug-spec does= all three
of these things properly.

The= second problem is in edebug. =A0The unification algorithm has
improper or missing handling for dotted pairs in specs. =A0I chose
to add the handling to `edebug-match-specs' since it seemed to be
the cleanest place to insert it.

** ChangeL= og

2011-09-26 =A0Steve Yegge =A0<stevey@google.com>

* emacs-lisp/cl-spe= cs.el: Fixed edebug-spec for
`dest= ructuring-bind' to allow dotted pairs in the
destructuring lambda list.= =A0(Bug#6415)

* emacs-lisp/edebug.el: Fixed edebug instrumentation of
dotted pa= irs in edebug specifications for macros. =A0(Bug#6415)

** The patch itself

=3D=3D=3D = modified file 'lisp/emacs-lisp/cl-specs.el'
--- lisp/emac= s-lisp/cl-specs.el= 2011-02-11 03:54:12 +0000
+++ lisp/emacs-lisp/cl-specs.el 2011-09-26 16:37:19 +0000
@@ -90,7 +90,= 7 @@
=A0 =A0((&rest (symbol sexp)) cl-declarations body))
=A0
=A0(def-edebug-spec destructuring-bind
- =A0(&d= efine cl-macro-list def-form cl-declarations def-body))
+ =A0(&am= p;define cl-macro-list1 def-form cl-declarations def-body))
=A0
=A0;; Setf
=A0

=3D=3D=3D modified file &= #39;lisp/emacs-lisp/edebug.el'
--- lisp/emacs-lisp/edebug.el<= span class=3D"Apple-tab-span" style=3D"white-space:pre"> 2011-08-21 = 17:43:31 +0000
+++ lisp/emacs-lisp/edebug.el 2011-09-26 16:44:39 +0000
@@ -1567,8 +156= 7,28 @@
=A0 =A0 =A0 =A0(let ((edebug-dotted-spec t));; Containing= spec list was dotted.
=A0 (e= debug-match-specs cursor (list specs) remainder-handler)))
=A0
- =A0 =A0 ;; Is the form dotted?
- =A0 =A0 ((not (listp (= edebug-cursor-expressions cursor)));; allow nil
+ =A0 =A0 ;; Special handling for the tail of a dotted form.
+ =A0 =A0 ((and
+ =A0 =A0 =A0 ;; Is the cursor on the tail of a = dotted form?
+ =A0 =A0 =A0 (not (listp (edebug-cursor-expressions= cursor)));; allow nil
+ =A0 =A0 =A0 ;; When matching a dotted form such as (a b . c) against= a
+ =A0 =A0 =A0 ;; spec list that looks like
+ =A0 =A0= =A0 ;; =A0 =A0 ([&rest ...] [&optional ...]+ . [&or arg nil])<= /div>
+ =A0 =A0 =A0 ;; ,e.g., the `cl-macro-list1' edebug-spec, the= n the &rest spec
+ =A0 =A0 =A0 ;; will consume everything up to the dotted tail (`c'= ; in this
+ =A0 =A0 =A0 ;; example). =A0At that point the spec li= st will look like so:
+ =A0 =A0 =A0 ;; =A0 =A0 ([&optional ..= .]+ . [&or arg nil])
+ =A0 =A0 =A0 ;; We need to be able to consume zero or more [&opti= onal ...]
+ =A0 =A0 =A0 ;; spec(s) without moving the cursor or s= ignaling an error.
+ =A0 =A0 =A0 ;; The current continuation prov= ides no state that tells us
+ =A0 =A0 =A0 ;; about the upcoming &optional specs, so we use loo= kahead:
+
+ =A0 =A0 =A0 ;; Recurse normally if we'r= e about to process an optional spec.
+ =A0 =A0 =A0 (not (eq (car = specs) '&optional))
+ =A0 =A0 =A0 ;; Recurse normally if the spec is a dotted list.
<= div>+ =A0 =A0 =A0 (not (and (listp specs)
+ =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 (not (listp (cdr (last specs)))))))
+ =A0 =A0 =A0;; O= therwise we need to be on the tail of a dotted spec.
=A0 =A0 =A0 =A0(if (not edebug-dotted-spec)
=A0 =A0(edebug-no-match = cursor "Dotted spec required."))
=A0 =A0 =A0 =A0;; Canc= el dotted spec and dotted form.

--000e0cd28a08d11a9204addb563a-- From unknown Mon Jun 23 13:11:25 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 27 Sep 2011 01:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6415 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed To: Steve Yegge Cc: 6415@debbugs.gnu.org Received: via spool by 6415-submit@debbugs.gnu.org id=B6415.131708787827690 (code B ref 6415); Tue, 27 Sep 2011 01:45:02 +0000 Received: (at 6415) by debbugs.gnu.org; 27 Sep 2011 01:44:38 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R8Mir-0007CZ-I6 for submit@debbugs.gnu.org; Mon, 26 Sep 2011 21:44:37 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1R8Mio-0007CS-LX for 6415@debbugs.gnu.org; Mon, 26 Sep 2011 21:44:35 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAJkpgU5FpZLc/2dsb2JhbABCp295gVMBAQQBViMFCws0EhQYDSSIC7oRhwsEoF6EQw X-IronPort-AV: E=Sophos;i="4.68,447,1312171200"; d="scan'208";a="138652641" Received: from 69-165-146-220.dsl.teksavvy.com (HELO ceviche.home) ([69.165.146.220]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 26 Sep 2011 21:43:47 -0400 Received: by ceviche.home (Postfix, from userid 20848) id E40E7660B6; Mon, 26 Sep 2011 21:43:46 -0400 (EDT) From: Stefan Monnier Message-ID: References: Date: Mon, 26 Sep 2011 21:43:46 -0400 In-Reply-To: (Steve Yegge's message of "Mon, 26 Sep 2011 10:17:52 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.7 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.7 (--) > It so happens that the `cl-macro-list1' edebug-spec does all three > of these things properly. I haven't looked into it, so I'll trust on that one. > The second problem is in edebug. The unification algorithm has > improper or missing handling for dotted pairs in specs. I chose > to add the handling to `edebug-match-specs' since it seemed to be > the cleanest place to insert it. This edebug-dotted-spec business is really ugly, I wonder if/how we could just get rid of this variable. Or at least document clearly what it is supposed to mean. > - ;; Is the form dotted? > - ((not (listp (edebug-cursor-expressions cursor)));; allow nil > + ;; Special handling for the tail of a dotted form. > + ((and > + ;; Is the cursor on the tail of a dotted form? > + (not (listp (edebug-cursor-expressions cursor)));; allow nil > + ;; When matching a dotted form such as (a b . c) against a > + ;; spec list that looks like > + ;; ([&rest ...] [&optional ...]+ . [&or arg nil]) > + ;; ,e.g., the `cl-macro-list1' edebug-spec, then the &rest spec > + ;; will consume everything up to the dotted tail (`c' in this > + ;; example). At that point the spec list will look like so: > + ;; ([&optional ...]+ . [&or arg nil]) > + ;; We need to be able to consume zero or more [&optional ...] > + ;; spec(s) without moving the cursor or signaling an error. > + ;; The current continuation provides no state that tells us > + ;; about the upcoming &optional specs, so we use lookahead: > + > + ;; Recurse normally if we're about to process an optional spec. > + (not (eq (car specs) '&optional)) > + ;; Recurse normally if the spec is a dotted list. > + (not (and (listp specs) > + (not (listp (cdr (last specs))))))) > + ;; Otherwise we need to be on the tail of a dotted spec. > (if (not edebug-dotted-spec) > (edebug-no-match cursor "Dotted spec required.")) > ;; Cancel dotted spec and dotted form. Questions: - Should it really only be &optional? it looks like any &foo might work just as well. Also shouldn't we check the (eq (aref (car specs) 0) '&optional) instead? - What's the purpose of the (not (and (listp specs) (not (listp (cdr (last specs))))))? For one (listp specs) will always be t (we've checked (atom specs) earlier and we've just called (car specs) on the previous line) so the code is really (not (and t (not (listp (cdr (last specs)))))) aka (listp (cdr (last specs))) but if the car of specs is not an &optional, then we have a mismatch anyway, no? Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 11 17:38:57 2013 Received: (at control) by debbugs.gnu.org; 11 Oct 2013 21:38:57 +0000 Received: from localhost ([127.0.0.1]:43697 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VUkQD-0008Kq-Eh for submit@debbugs.gnu.org; Fri, 11 Oct 2013 17:38:57 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:58679) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VUkQB-0008Ki-4u for control@debbugs.gnu.org; Fri, 11 Oct 2013 17:38:55 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1VUkQA-0001BQ-IR for control@debbugs.gnu.org; Fri, 11 Oct 2013 17:38:54 -0400 Date: Fri, 11 Oct 2013 17:38:54 -0400 Message-Id: Subject: control message for bug 15587 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -5.2 (-----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.2 (-----) merge 6415 15587 From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 18 22:56:29 2017 Received: (at control) by debbugs.gnu.org; 19 Apr 2017 02:56:29 +0000 Received: from localhost ([127.0.0.1]:55381 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0fnB-0004AK-6k for submit@debbugs.gnu.org; Tue, 18 Apr 2017 22:56:29 -0400 Received: from mail-it0-f41.google.com ([209.85.214.41]:37966) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0fn9-0004A4-U3 for control@debbugs.gnu.org; Tue, 18 Apr 2017 22:56:28 -0400 Received: by mail-it0-f41.google.com with SMTP id e132so5683159ite.1 for ; Tue, 18 Apr 2017 19:56:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:mime-version; bh=atIvAsOAci2XNl0lMrdxjMAWOMewOc2/skrYwo1y9DQ=; b=HzrAJUb6hItL8skYc8X8eLAF25GJCzlXdAswWBV6rqexQAk3qPmz/absjXxqnWIntD q/JfV9mrV02IIXhw36eEq1RfsxByDF2wi/KsqtYHCPf2p3diwV2LvLi4/0iZ5Oexge9Q O9E3RUimPQwL9OxsyIBGo8QRwCJvgcfi5zQmnepGYuI9prFNWkckdYnVXfTmuLvaB+Zx UpRm0k04w3fCcNRRxVjPghAgXJzaIvjUyFnvNIfKYP+ge/rZ3feoOxGPYzlmshxOahRc l0zjqjU0sactVEd8ui+uv/b4LBoZf0QS1PTmplQcNoBptcP7bgKbwx/2kJ2JnsxXwz1D /yWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :mime-version; bh=atIvAsOAci2XNl0lMrdxjMAWOMewOc2/skrYwo1y9DQ=; b=IeRpIcP8dDuepe3qR+rCyBCShHy0kHSqvC1AHEplQc9wihCQGIpCmk0PeeCvk+8TBO R91hd5aoBGZqNT+gSJlWmeTM0bP3fvRdBYefc3DxV2765iOjZvwjMpBLIAtkWzLHJNrP ftABCKlw4Jv+zfrf8ty8pf9ffGFqCsHuGntXbhTPBeeblKOAJ30hw8Mkdaq7jEI4XIki 05trsFiZtTdDmkhyoy5KhFo8o1YyD+UCsevk185DjAeFpKbFpvsQkD/SI22BFLr6KURO baGsNMSrqI0rc/OhDuD8S3o10ZGyvV1GIOQpdRP+hlazuEvNLfpnTMLoTKAb5e/qcBin TdtQ== X-Gm-Message-State: AN3rC/5bD99LUagWc0/WzVMmpA7HolwFJ6xf+LrEucIMdxLW837RcUD0 5C0OWRAMXqB6jC9M X-Received: by 10.36.39.201 with SMTP id g192mr18044504ita.74.1492570582086; Tue, 18 Apr 2017 19:56:22 -0700 (PDT) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id 204sm755650itz.29.2017.04.18.19.56.21 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 18 Apr 2017 19:56:21 -0700 (PDT) From: npostavs@users.sourceforge.net To: control@debbugs.gnu.org Subject: control message for bug #24885 Date: Tue, 18 Apr 2017 22:57:50 -0400 Message-ID: <8760i1rtn5.fsf@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.7 (/) merge 24885 6415 quit From unknown Mon Jun 23 13:11:25 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros Resent-From: Gemini Lasswell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Nov 2017 21:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6415 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed patch To: Stefan Monnier Cc: 6415@debbugs.gnu.org, Steve Yegge Received: via spool by 6415-submit@debbugs.gnu.org id=B6415.150991834013544 (code B ref 6415); Sun, 05 Nov 2017 21:46:01 +0000 Received: (at 6415) by debbugs.gnu.org; 5 Nov 2017 21:45:40 +0000 Received: from localhost ([127.0.0.1]:52736 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eBSjb-0003WO-LR for submit@debbugs.gnu.org; Sun, 05 Nov 2017 16:45:40 -0500 Received: from aibo.runbox.com ([91.220.196.211]:52130) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eBSjZ-0003WF-EM for 6415@debbugs.gnu.org; Sun, 05 Nov 2017 16:45:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=RDlC3qQcPD3bErWC4CIZP9b26nvCxb2UQPXvsha3qQ4=; b=TjZMzSPpVkU4hKtyRXV5SqsYzT 2cLXxk/UXZIMp5bJMY4DTC9aKTnUW33bjtjotUPUK+qo3ph9HvljexgckdDKQpLH9qAyFqk7TXgL0 4gUN1evghoAnipH7n+qBCrrW60SjOKX4OH8LHpxMsCAHo9CEQ45ANEwyKDyANte6lNN99dGGMHOpu nmu4IgL2Kef3KN8RFFiBrQu7cPkSy43VKjiqpLxUz+kn9LWLUg21Q8xxJuACJPrQSgInJMSDlsKrs 6axBvCgV9sijM2Q9qUm6F/pX5azHLq8Nng/BAwRtU/1eiGAS18xcEy014u15VyL4Z03uxlXymQQae kS4F0byA==; Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1eBSjS-0001dX-T7; Sun, 05 Nov 2017 22:45:30 +0100 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront12.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1eBSjN-00052U-8a; Sun, 05 Nov 2017 22:45:25 +0100 From: Gemini Lasswell References: Date: Sun, 05 Nov 2017 13:45:21 -0800 In-Reply-To: (Stefan Monnier's message of "Mon, 26 Sep 2011 21:43:46 -0400") Message-ID: <87tvy8h026.fsf@runbox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --=-=-= Content-Type: text/plain Here's a new patch for this bug, based on the ideas in Steve's patch. It also allows &rest and specs wrapped in vectors to attempt to match before a dotted tail. --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=0001-Fix-Edebug-s-handling-of-dotted-specs-bug-6415.patch >From e6120334f29d97a026a3a2b2892d71ad73be0225 Mon Sep 17 00:00:00 2001 From: Gemini Lasswell Date: Wed, 1 Nov 2017 21:13:02 -0700 Subject: [PATCH] Fix Edebug's handling of dotted specs (bug#6415) * lisp/emacs-lisp/cl-macs.el (cl-destructuring-bind): Use cl-macro-list1 instead of cl-macro-list in Edebug spec. * lisp/emacs-lisp/edebug.el (edebug-after-dotted-spec): Delete unused variable. (edebug-dotted-spec): Add docstring. (edebug-match-specs): Allow &optional and &rest specs to match nothing at the tail of a dotted form. Handle matches of dotted form tails which return non-lists. * test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-dotted-forms): New test. * test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el: (edebug-test-code-use-destructuring-bind): New function. --- lisp/emacs-lisp/cl-macs.el | 2 +- lisp/emacs-lisp/edebug.el | 67 +++++++++++++--------- .../edebug-resources/edebug-test-code.el | 4 ++ test/lisp/emacs-lisp/edebug-tests.el | 14 +++++ 4 files changed, 58 insertions(+), 29 deletions(-) diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index e313af2497..5535100d4a 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -684,7 +684,7 @@ cl--arglist-args (defmacro cl-destructuring-bind (args expr &rest body) "Bind the variables in ARGS to the result of EXPR and execute BODY." (declare (indent 2) - (debug (&define cl-macro-list def-form cl-declarations def-body))) + (debug (&define cl-macro-list1 def-form cl-declarations def-body))) (let* ((cl--bind-lets nil) (cl--bind-forms nil) (cl--bind-defs nil) (cl--bind-block 'cl-none) (cl--bind-enquote nil)) (cl--do-arglist (or args '(&aux)) expr) diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 0e8f77e29a..dec986ae3e 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -950,7 +950,8 @@ edebug-read-vector ;;; Cursors for traversal of list and vector elements with offsets. -(defvar edebug-dotted-spec nil) +(defvar edebug-dotted-spec nil + "Set to t when matching after the dot in a dotted spec list.") (defun edebug-new-cursor (expressions offsets) ;; Return a new cursor for EXPRESSIONS with OFFSETS. @@ -1526,8 +1527,6 @@ edebug-list-form ;;; Matching of specs. -(defvar edebug-after-dotted-spec nil) - (defvar edebug-matching-depth 0) ;; initial value @@ -1588,36 +1587,48 @@ edebug-match-specs (let ((edebug-dotted-spec t));; Containing spec list was dotted. (edebug-match-specs cursor (list specs) remainder-handler))) - ;; Is the form dotted? - ((not (listp (edebug-cursor-expressions cursor)));; allow nil + ;; The reason for processing here &optional, &rest, and vectors + ;; which might contain them even when the form is dotted is to + ;; allow them to match nothing, so we can advance to the dotted + ;; part of the spec. + ((or (listp (edebug-cursor-expressions cursor)) + (vectorp (car specs)) + (memq (car specs) '(&optional &rest))) ; Process normally. + ;; (message "%scursor=%s specs=%s" + ;; (make-string edebug-matching-depth ?|) cursor (car specs)) + (let* ((spec (car specs)) + (rest) + (first-char (and (symbolp spec) (aref (symbol-name spec) 0))) + (match (cond + ((eq ?& first-char);; "&" symbols take all following specs. + (funcall (get-edebug-spec spec) cursor (cdr specs))) + ((eq ?: first-char);; ":" symbols take one following spec. + (setq rest (cdr (cdr specs))) + (funcall (get-edebug-spec spec) cursor (car (cdr specs)))) + (t;; Any other normal spec. + (setq rest (cdr specs)) + (edebug-match-one-spec cursor spec))))) + ;; The first match result may not be a list, which can happen + ;; when matching the tail of a dotted list. In that case + ;; there is no remainder. + (if (listp match) + (nconc match + (funcall remainder-handler cursor rest remainder-handler)) + match))) + + ;; Must be a dotted form, with no remaining &rest or &optional specs to + ;; match. + (t (if (not edebug-dotted-spec) (edebug-no-match cursor "Dotted spec required.")) ;; Cancel dotted spec and dotted form. (let ((edebug-dotted-spec) - (this-form (edebug-cursor-expressions cursor)) - (this-offset (edebug-cursor-offsets cursor))) - ;; Wrap the form in a list, (by changing the cursor??)... + (this-form (edebug-cursor-expressions cursor)) + (this-offset (edebug-cursor-offsets cursor))) + ;; Wrap the form in a list, by changing the cursor. (edebug-set-cursor cursor (list this-form) this-offset) - ;; and process normally, then unwrap the result. - (car (edebug-match-specs cursor specs remainder-handler)))) - - (t;; Process normally. - (let* ((spec (car specs)) - (rest) - (first-char (and (symbolp spec) (aref (symbol-name spec) 0)))) - ;;(message "spec = %s first char = %s" spec first-char) (sit-for 1) - (nconc - (cond - ((eq ?& first-char);; "&" symbols take all following specs. - (funcall (get-edebug-spec spec) cursor (cdr specs))) - ((eq ?: first-char);; ":" symbols take one following spec. - (setq rest (cdr (cdr specs))) - (funcall (get-edebug-spec spec) cursor (car (cdr specs)))) - (t;; Any other normal spec. - (setq rest (cdr specs)) - (edebug-match-one-spec cursor spec))) - (funcall remainder-handler cursor rest remainder-handler))))))) - + ;; Process normally, then unwrap the result. + (car (edebug-match-specs cursor specs remainder-handler))))))) ;; Define specs for all the symbol specs with functions used to process them. ;; Perhaps we shouldn't be doing this with edebug-form-specs since the diff --git a/test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el b/test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el index f52a2b1896..ca49dcd213 100644 --- a/test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el +++ b/test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el @@ -126,5 +126,9 @@ edebug-test-code-current-buffer !start!(with-current-buffer (get-buffer-create "*edebug-test-code-buffer*") !body!(format "current-buffer: %s" (current-buffer)))) +(defun edebug-test-code-use-destructuring-bind () + (let ((two 2) (three 3)) + (cl-destructuring-bind (x . y) (cons two three) (+ x!x! y!y!)))) + (provide 'edebug-test-code) ;;; edebug-test-code.el ends here diff --git a/test/lisp/emacs-lisp/edebug-tests.el b/test/lisp/emacs-lisp/edebug-tests.el index 02f4d1c5ab..f6c016cdf8 100644 --- a/test/lisp/emacs-lisp/edebug-tests.el +++ b/test/lisp/emacs-lisp/edebug-tests.el @@ -899,5 +899,19 @@ edebug-tests-setup-code-file "@g" (should (equal edebug-tests-@-result '(#("abcd" 1 3 (face italic)) 511)))))) +(ert-deftest edebug-tests-dotted-forms () + "Edebug can instrument code matching the tail of a dotted spec (Bug#6415)." + (edebug-tests-with-normal-env + (edebug-tests-setup-@ "use-destructuring-bind" nil t) + (edebug-tests-run-kbd-macro + "@ SPC SPC SPC SPC SPC SPC" + (edebug-tests-should-be-at "use-destructuring-bind" "x") + (edebug-tests-should-match-result-in-messages "2 (#o2, #x2, ?\\C-b)") + "SPC" + (edebug-tests-should-be-at "use-destructuring-bind" "y") + (edebug-tests-should-match-result-in-messages "3 (#o3, #x3, ?\\C-c)") + "g" + (should (equal edebug-tests-@-result 5))))) + (provide 'edebug-tests) ;;; edebug-tests.el ends here -- 2.14.3 --=-=-= Content-Type: text/plain Stefan Monnier writes: > This edebug-dotted-spec business is really ugly, I wonder if/how we > could just get rid of this variable. Or at least document clearly what > it is supposed to mean. I agree. After far too many hours of looking at this, I think the way to get rid of the variable is to make Edebug's internal representation of its specs into a cl-defstruct so there is room for a "dotted" flag, and then change all the edebug match code so that whenever it makes a new spec or modifies the one it is working with, it inherits the dotted flag. I have a branch with this partially done and am confident that it will work and not cause a performance problem, but it seems like a lot of work and a lot of changes to stable code to make it work exactly the same. So I added a docstring. --=-=-=-- From unknown Mon Jun 23 13:11:25 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Geoff Gole Subject: bug#6415: closed (Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros) Message-ID: References: <871skkr6d8.fsf@runbox.com> X-Gnu-PR-Message: they-closed 6415 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: confirmed patch Reply-To: 6415@debbugs.gnu.org Date: Sun, 26 Nov 2017 23:03:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1511737382-945-1" This is a multi-part message in MIME format... ------------=_1511737382-945-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #6415: 23.1.50; edebug-eval-defun errors on dotted pair in some macros 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 6415@debbugs.gnu.org. --=20 6415: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D6415 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1511737382-945-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 6415-done) by debbugs.gnu.org; 26 Nov 2017 23:02:47 +0000 Received: from localhost ([127.0.0.1]:59743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wl-0000Eo-Ed for submit@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:47 -0500 Received: from aibo.runbox.com ([91.220.196.211]:59680) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wj-0000Ef-Ak for 6415-done@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=JQw9No9Q6aAsGcDye3F4EbyzrgQ1B2wwWyHks4iXYAw=; b=MhSXCJHkjnl086kkdKZcAq9AOM pgTVyeCu9HTRfwJ1ffilfcExGZBPzCHRrM/c3d/jGhAtAWneXb3w6KFKMgGdIdWVQFvy+1ErT/mh0 mWDfh39/HR7BgdnGtvnLE3r1rUOTrLaYnwP066zqP9DFNH9i/Vcp1X+bJRkmEChgevd0rE22mdiqE NsVoi82Aalumn+yco6ihhnBY714/XJGRW/iz1fhw0cKwVPdAf2i5e6xniFUC8tTqwwfOXQ9tYPj7I MPgnc5COLumKgeHtbggoHE/fhvM5Yl6cYitxLNSRO5xYdhRoipkSkAZrK7HQVO72h/EfWmvFoBLli PhqBZBLw==; Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1eJ5wg-0000Ws-2c; Mon, 27 Nov 2017 00:02:42 +0100 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront12.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1eJ5wT-0001GC-Sp; Mon, 27 Nov 2017 00:02:30 +0100 From: Gemini Lasswell To: Stefan Monnier Subject: Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros References: <87tvy8h026.fsf@runbox.com> Date: Sun, 26 Nov 2017 15:02:27 -0800 In-Reply-To: <87tvy8h026.fsf@runbox.com> (Gemini Lasswell's message of "Sun, 05 Nov 2017 13:45:21 -0800") Message-ID: <871skkr6d8.fsf@runbox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 6415-done Cc: 6415-done@debbugs.gnu.org, Steve Yegge X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Gemini Lasswell 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. ------------=_1511737382-945-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 13 Jun 2010 18:05:08 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONrYR-0006dq-K3 for submit@debbugs.gnu.org; Sun, 13 Jun 2010 14:05:08 -0400 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONpMm-0005ay-Qs for submit@debbugs.gnu.org; Sun, 13 Jun 2010 11:44:57 -0400 Received: from mx10.gnu.org ([199.232.76.166]:59499) by fencepost.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONpMh-00005B-GH for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:44:52 -0400 Received: from eggs.gnu.org ([140.186.70.92]:50938) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1ONp4d-0004LR-7Q for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:26:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ONp4b-00047C-GZ for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:26:10 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID, T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.3.1 Received: from mail-gw0-f41.google.com ([74.125.83.41]:37048) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONp4b-000478-EN for emacs-pretest-bug@gnu.org; Sun, 13 Jun 2010 11:26:09 -0400 Received: by gwaa18 with SMTP id a18so1680675gwa.0 for ; Sun, 13 Jun 2010 08:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=xcHBp+X4Og3Q7Zz3V/qo1euuuaikz/B5AfwtHjlrJyo=; b=Qc1RU70QvucvLhh/67h5shyJ4T9sqGK6qukg3YjB470VdWVQQM4n9ljftvwaK0og3w kDZ9Gd86Phnxx495BwK9wNZ5vYPN/XL6BfTtajbtTxnTKLlTh8c0MOEpJdRKHMmrHiRd 6gVa2L3lb7vB+l90e1m5FA2IOXYTVulhElzlc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=t00I0mfa5MwEzY6KxRDq19VUrlsNXuRK27rPJ4YkB8pnK6cL/q2+3nTy4m4mOCFrph 1Wp0Fb6W4I8KJ2tXQTm5jfj/iOTURlMhybTTSFV+JoWcGWvcQXhhMR1Y/CysJW6SqW6N W7dZ8KX4/80sArjXXJA5dhDXq0Bh7y28JotcY= MIME-Version: 1.0 Received: by 10.229.250.149 with SMTP id mo21mr1752045qcb.250.1276442767614; Sun, 13 Jun 2010 08:26:07 -0700 (PDT) Received: by 10.229.246.206 with HTTP; Sun, 13 Jun 2010 08:26:07 -0700 (PDT) Date: Sun, 13 Jun 2010 23:26:07 +0800 Message-ID: Subject: 23.1.50; edebug-eval-defun errors on dotted pair in some macros From: Geoff Gole To: emacs-pretest-bug@gnu.org Content-Type: text/plain; charset=ISO-8859-1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-Spam-Score: -5.9 (-----) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sun, 13 Jun 2010 14:05:06 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.9 (-----) When presented with a reasonable defun form containing an unevaluated dotted pair, edebug-eval-defun fails with Invalid read syntax: "Dotted spec required." I *think* that this is an error in the cl.el debug specs and not edebug itself. Unfortunately that's hard to verify by stepping edebug.el as said debug specs are largely incomprehensible. To reproduce: emacs -Q insert (defun bug () (destructuring-bind (x . y))) C-u C-M-x GNU Emacs 23.1.50.1 (i686-pc-linux-gnu, GTK+ Version 2.12.11) of 2009-07-30 ------------=_1511737382-945-1-- From unknown Mon Jun 23 13:11:25 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Leo Subject: bug#6566: closed (Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros) Message-ID: References: <871skkr6d8.fsf@runbox.com> X-Gnu-PR-Message: they-closed 6566 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: confirmed patch Reply-To: 6566@debbugs.gnu.org Date: Sun, 26 Nov 2017 23:03:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1511737382-945-3" This is a multi-part message in MIME format... ------------=_1511737382-945-3 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 6566@debbugs.gnu.org. --=20 6415: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D6415 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1511737382-945-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 6415-done) by debbugs.gnu.org; 26 Nov 2017 23:02:47 +0000 Received: from localhost ([127.0.0.1]:59743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wl-0000Eo-Ed for submit@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:47 -0500 Received: from aibo.runbox.com ([91.220.196.211]:59680) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wj-0000Ef-Ak for 6415-done@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=JQw9No9Q6aAsGcDye3F4EbyzrgQ1B2wwWyHks4iXYAw=; b=MhSXCJHkjnl086kkdKZcAq9AOM pgTVyeCu9HTRfwJ1ffilfcExGZBPzCHRrM/c3d/jGhAtAWneXb3w6KFKMgGdIdWVQFvy+1ErT/mh0 mWDfh39/HR7BgdnGtvnLE3r1rUOTrLaYnwP066zqP9DFNH9i/Vcp1X+bJRkmEChgevd0rE22mdiqE NsVoi82Aalumn+yco6ihhnBY714/XJGRW/iz1fhw0cKwVPdAf2i5e6xniFUC8tTqwwfOXQ9tYPj7I MPgnc5COLumKgeHtbggoHE/fhvM5Yl6cYitxLNSRO5xYdhRoipkSkAZrK7HQVO72h/EfWmvFoBLli PhqBZBLw==; Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1eJ5wg-0000Ws-2c; Mon, 27 Nov 2017 00:02:42 +0100 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront12.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1eJ5wT-0001GC-Sp; Mon, 27 Nov 2017 00:02:30 +0100 From: Gemini Lasswell To: Stefan Monnier Subject: Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros References: <87tvy8h026.fsf@runbox.com> Date: Sun, 26 Nov 2017 15:02:27 -0800 In-Reply-To: <87tvy8h026.fsf@runbox.com> (Gemini Lasswell's message of "Sun, 05 Nov 2017 13:45:21 -0800") Message-ID: <871skkr6d8.fsf@runbox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 6415-done Cc: 6415-done@debbugs.gnu.org, Steve Yegge X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Gemini Lasswell 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. ------------=_1511737382-945-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 5 Jul 2010 12:52:33 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OVlA0-0002gK-RY for submit@debbugs.gnu.org; Mon, 05 Jul 2010 08:52:33 -0400 Received: from mail.gnu.org ([199.232.76.166] helo=mx10.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OVl9z-0002gF-3v for submit@debbugs.gnu.org; Mon, 05 Jul 2010 08:52:31 -0400 Received: from lists.gnu.org ([199.232.76.165]:44871) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1OVl9t-0005aL-T4 for submit@debbugs.gnu.org; Mon, 05 Jul 2010 08:52:25 -0400 Received: from [140.186.70.92] (port=35454 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OVl9r-0005gs-UN for bug-gnu-emacs@gnu.org; Mon, 05 Jul 2010 08:52:25 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_MED,T_RP_MATCHES_RCVD,T_TO_NO_BRKTS_FREEMAIL autolearn=unavailable version=3.3.1 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OVl9q-0003rU-8K for bug-gnu-emacs@gnu.org; Mon, 05 Jul 2010 08:52:23 -0400 Received: from ppsw-31.csi.cam.ac.uk ([131.111.8.131]:57437) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OVl9p-0003r8-T7 for bug-gnu-emacs@gnu.org; Mon, 05 Jul 2010 08:52:22 -0400 X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from cpc1-cmbg13-0-0-cust596.cmbg.cable.ntl.com ([86.9.122.85]:58529 helo=Victoria.local) by ppsw-31.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:587) with esmtpsa (PLAIN:sl392) (TLSv1:DHE-RSA-AES128-SHA:128) id 1OVl9n-0000hK-MJ (Exim 4.72) for bug-gnu-emacs@gnu.org (return-path ); Mon, 05 Jul 2010 13:52:20 +0100 From: Leo To: bug-gnu-emacs@gnu.org Subject: 23.2; error: (invalid-read-syntax "Dotted spec required.") Date: Mon, 05 Jul 2010 13:52:17 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Spam-Score: -5.3 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) 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) ------------=_1511737382-945-3-- From unknown Mon Jun 23 13:11:25 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Oleh Subject: bug#15587: closed (Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros) Message-ID: References: <871skkr6d8.fsf@runbox.com> <87zjqg9jme.fsf@gmail.com> X-Gnu-PR-Message: they-closed 15587 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: confirmed patch Reply-To: 15587@debbugs.gnu.org Date: Sun, 26 Nov 2017 23:03:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1511737382-945-5" This is a multi-part message in MIME format... ------------=_1511737382-945-5 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #6415: [PATCH] Edebug `destructuring-bind' dotted spec 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 15587@debbugs.gnu.org. --=20 6415: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D6415 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1511737382-945-5 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 6415-done) by debbugs.gnu.org; 26 Nov 2017 23:02:47 +0000 Received: from localhost ([127.0.0.1]:59743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wl-0000Eo-Ed for submit@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:47 -0500 Received: from aibo.runbox.com ([91.220.196.211]:59680) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wj-0000Ef-Ak for 6415-done@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=JQw9No9Q6aAsGcDye3F4EbyzrgQ1B2wwWyHks4iXYAw=; b=MhSXCJHkjnl086kkdKZcAq9AOM pgTVyeCu9HTRfwJ1ffilfcExGZBPzCHRrM/c3d/jGhAtAWneXb3w6KFKMgGdIdWVQFvy+1ErT/mh0 mWDfh39/HR7BgdnGtvnLE3r1rUOTrLaYnwP066zqP9DFNH9i/Vcp1X+bJRkmEChgevd0rE22mdiqE NsVoi82Aalumn+yco6ihhnBY714/XJGRW/iz1fhw0cKwVPdAf2i5e6xniFUC8tTqwwfOXQ9tYPj7I MPgnc5COLumKgeHtbggoHE/fhvM5Yl6cYitxLNSRO5xYdhRoipkSkAZrK7HQVO72h/EfWmvFoBLli PhqBZBLw==; Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1eJ5wg-0000Ws-2c; Mon, 27 Nov 2017 00:02:42 +0100 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront12.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1eJ5wT-0001GC-Sp; Mon, 27 Nov 2017 00:02:30 +0100 From: Gemini Lasswell To: Stefan Monnier Subject: Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros References: <87tvy8h026.fsf@runbox.com> Date: Sun, 26 Nov 2017 15:02:27 -0800 In-Reply-To: <87tvy8h026.fsf@runbox.com> (Gemini Lasswell's message of "Sun, 05 Nov 2017 13:45:21 -0800") Message-ID: <871skkr6d8.fsf@runbox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 6415-done Cc: 6415-done@debbugs.gnu.org, Steve Yegge X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Gemini Lasswell 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. ------------=_1511737382-945-5 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 11 Oct 2013 10:40:49 +0000 Received: from localhost ([127.0.0.1]:42640 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VUa9I-000701-Gb for submit@debbugs.gnu.org; Fri, 11 Oct 2013 06:40:48 -0400 Received: from eggs.gnu.org ([208.118.235.92]:58742) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VUa97-0006zk-8M for submit@debbugs.gnu.org; Fri, 11 Oct 2013 06:40:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VUa8y-00032L-Oo for submit@debbugs.gnu.org; Fri, 11 Oct 2013 06:40:37 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:43652) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUa8y-00032F-Lb for submit@debbugs.gnu.org; Fri, 11 Oct 2013 06:40:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60425) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUa8p-0001Rn-TJ for bug-gnu-emacs@gnu.org; Fri, 11 Oct 2013 06:40:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VUa8g-0002ys-Qo for bug-gnu-emacs@gnu.org; Fri, 11 Oct 2013 06:40:19 -0400 Received: from mail-ee0-x22d.google.com ([2a00:1450:4013:c00::22d]:39210) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUa8g-0002yT-IU for bug-gnu-emacs@gnu.org; Fri, 11 Oct 2013 06:40:10 -0400 Received: by mail-ee0-f45.google.com with SMTP id c50so1785361eek.32 for ; Fri, 11 Oct 2013 03:40:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=user-agent:from:to:subject:date:message-id:mime-version :content-type; bh=mBurmOYStejB22JoUxTJXdDLZrvsiLQbQptdNP5LPnM=; b=xFhqwH4XK8KwY2ZXNdJ4l7AkT2hlMVoxhFgSU90oZOKapU+GeynXg4CjHFNtPpr+FH EesBphCkdZuKkfDTJs1UsOO1WCsa/jy1gOzE8eA5zM4XxOI5B44R4v69yqYrOel+ygi7 e/ftXLlcD1bgXElbT2DjSNh2/Z9+aOLD+m2zIh8pIJ+aMPpZEc39JD/zyPJJmUsqwX34 xcF04yJIGyY3LBGqBlYqOFhNhBogvjqEMIOFImBsRuJrmb9NybQJi4usg570uZOiXoxP OwU3YBeBBMz+s3JzLz92lAYX31rVDL/bWUV8GE8mnEAmU1x46XewE9KpexLO2NbiwIqx wZ3w== X-Received: by 10.15.48.67 with SMTP id g43mr28448084eew.17.1381488009040; Fri, 11 Oct 2013 03:40:09 -0700 (PDT) Received: from firefly (dyn069213.nbw.tue.nl. [131.155.69.213]) by mx.google.com with ESMTPSA id x47sm113238224eea.16.1969.12.31.16.00.00 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 11 Oct 2013 03:40:08 -0700 (PDT) User-agent: mu4e 0.9.9.5; emacs 24.3.4 From: Oleh To: bug-gnu-emacs@gnu.org Subject: [PATCH] Edebug `destructuring-bind' dotted spec Date: Fri, 11 Oct 2013 12:39:37 +0200 Message-ID: <87zjqg9jme.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --=-=-= Content-Type: text/plain Hi, Currently it's not possible to edebug (defun foo (z) (destructuring-bind (x . y) z (+ x y))) I attach a small patch to fix this. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-emacs-lisp-cl-macs.el-cl-destructuring-bind-added-do.patch >From 51a191c06f210eecf594be384e9b835afb9a818f Mon Sep 17 00:00:00 2001 From: Oleh Krehel Date: Fri, 11 Oct 2013 12:34:03 +0200 Subject: [PATCH] * emacs-lisp/cl-macs.el: (cl-destructuring-bind): added dotted form as an option for edebug. Edebug will now work for: (defun foo (z) (destructuring-bind (x . y) z (+ x y))) --- emacs-lisp/cl-macs.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emacs-lisp/cl-macs.el b/emacs-lisp/cl-macs.el index 60fdc09..a84e677 100644 --- a/emacs-lisp/cl-macs.el +++ b/emacs-lisp/cl-macs.el @@ -565,7 +565,7 @@ its argument list allows full Common Lisp conventions." (defmacro cl-destructuring-bind (args expr &rest body) "Bind the variables in ARGS to the result of EXPR and execute BODY." (declare (indent 2) - (debug (&define cl-macro-list def-form cl-declarations def-body))) + (debug (&define [&or cl-macro-list (sexp . sexp)] def-form cl-declarations def-body))) (let* ((cl--bind-lets nil) (cl--bind-forms nil) (cl--bind-inits nil) (cl--bind-defs nil) (cl--bind-block 'cl-none) (cl--bind-enquote nil)) (cl--do-arglist (or args '(&aux)) expr) -- 1.8.4 --=-=-= Content-Type: text/plain regards, Oleh --=-=-=-- ------------=_1511737382-945-5-- From unknown Mon Jun 23 13:11:25 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Alex Subject: bug#24885: closed (Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros) Message-ID: References: <871skkr6d8.fsf@runbox.com> <87zildsqwf.fsf@gmail.com> X-Gnu-PR-Message: they-closed 24885 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: confirmed patch Reply-To: 24885@debbugs.gnu.org Date: Sun, 26 Nov 2017 23:03:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1511737383-945-7" This is a multi-part message in MIME format... ------------=_1511737383-945-7 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #6415: 26.0.50; edebug-eval-defun fails on a cl-destructuring-bind with con= s cell 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 24885@debbugs.gnu.org. --=20 6415: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D6415 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1511737383-945-7 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 6415-done) by debbugs.gnu.org; 26 Nov 2017 23:02:47 +0000 Received: from localhost ([127.0.0.1]:59743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wl-0000Eo-Ed for submit@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:47 -0500 Received: from aibo.runbox.com ([91.220.196.211]:59680) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eJ5wj-0000Ef-Ak for 6415-done@debbugs.gnu.org; Sun, 26 Nov 2017 18:02:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From; bh=JQw9No9Q6aAsGcDye3F4EbyzrgQ1B2wwWyHks4iXYAw=; b=MhSXCJHkjnl086kkdKZcAq9AOM pgTVyeCu9HTRfwJ1ffilfcExGZBPzCHRrM/c3d/jGhAtAWneXb3w6KFKMgGdIdWVQFvy+1ErT/mh0 mWDfh39/HR7BgdnGtvnLE3r1rUOTrLaYnwP066zqP9DFNH9i/Vcp1X+bJRkmEChgevd0rE22mdiqE NsVoi82Aalumn+yco6ihhnBY714/XJGRW/iz1fhw0cKwVPdAf2i5e6xniFUC8tTqwwfOXQ9tYPj7I MPgnc5COLumKgeHtbggoHE/fhvM5Yl6cYitxLNSRO5xYdhRoipkSkAZrK7HQVO72h/EfWmvFoBLli PhqBZBLw==; Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1eJ5wg-0000Ws-2c; Mon, 27 Nov 2017 00:02:42 +0100 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront12.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1eJ5wT-0001GC-Sp; Mon, 27 Nov 2017 00:02:30 +0100 From: Gemini Lasswell To: Stefan Monnier Subject: Re: bug#6415: [PATCH] fix edebug instrumentation of dotted pairs in macros References: <87tvy8h026.fsf@runbox.com> Date: Sun, 26 Nov 2017 15:02:27 -0800 In-Reply-To: <87tvy8h026.fsf@runbox.com> (Gemini Lasswell's message of "Sun, 05 Nov 2017 13:45:21 -0800") Message-ID: <871skkr6d8.fsf@runbox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 6415-done Cc: 6415-done@debbugs.gnu.org, Steve Yegge X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Gemini Lasswell 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. ------------=_1511737383-945-7 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 5 Nov 2016 18:50:16 +0000 Received: from localhost ([127.0.0.1]:46129 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c362h-0002ca-Ft for submit@debbugs.gnu.org; Sat, 05 Nov 2016 14:50:16 -0400 Received: from eggs.gnu.org ([208.118.235.92]:52156) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c362g-0002cO-8v for submit@debbugs.gnu.org; Sat, 05 Nov 2016 14:50:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c362Y-0004Cf-Pr for submit@debbugs.gnu.org; Sat, 05 Nov 2016 14:50:09 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:50231) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c362Y-0004CS-MT for submit@debbugs.gnu.org; Sat, 05 Nov 2016 14:50:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c362W-0002UL-9r for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2016 14:50:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c362R-00043Z-BF for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2016 14:50:04 -0400 Received: from mail-it0-x229.google.com ([2607:f8b0:4001:c0b::229]:37468) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c362R-00041h-2b for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2016 14:49:59 -0400 Received: by mail-it0-x229.google.com with SMTP id u205so44442391itc.0 for ; Sat, 05 Nov 2016 11:49:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version; bh=caBHeSHjyL+TW4+i0fjJb6Eu1P1a/inMTLbShx9P/I0=; b=pbDZj/a1gX/SlXQPaWNXlsLX87GCXfKnvC/PdoyIhCi6m01Cv9d4Su3r/w/1jctRsG fPucsnQBsib2aRTKmDQ+ZmLfcDHpcUZLSBbC6OcwEwuyTefX2S1Y7URyn7vxsUbfp/bZ z64w6SxMJO28zsPLhedKNkmG1Gq/hodfMjn3wj7/IA3GdO5qDNzTtJfUDcdjf49BWV0e 7R/ROiPZOmodVL5R3OezPcsg4PcLKvIyUTD32CcKmJjr4VOFDRIU4BLTsb8x8ZeWpV+E /PoTdzsl6Mh5JjPA7nxf16iAL4Sjp1RrOxWROtUMH7Im5CSVJpm179aYVASvnFy91bAl ACWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=caBHeSHjyL+TW4+i0fjJb6Eu1P1a/inMTLbShx9P/I0=; b=PdnsnYSo0hs/Vu86B6KipmkYJuH6YICfE/wQyy7X06vmMvg2Adbw0eCs6bG2k6MZw4 bOomAK1B0v1+pgtG9p6uuTAl2DyhK8h5yHCLW33EozWNvgfULKEmN2VG0uT7I/8cPM6s GgRjUQSC6KyYbvgdv7PidzvCAq1JKmet6PSbD2uv5s0TZebCwvm/5VjnuqcFHSUA60JO 1EjZ4GGyiGQm2QrmOYfgJY/NUaYhHVkktarjoLfwp8cLeTQuDPCgs5mkdXnXqoxqD99P NBQKKbk/vbeWYV+uU3FUa8olOBr6kaZYLEOM/5C6NWBaYwck1Br/nNMy95O8aRJ9AflD 0sMg== X-Gm-Message-State: ABUngvc0CJVKQVQ/iQhOHkFnTeXH4yw7Cdwe6CruaTwbSF1rZAGw7xEBN38w1KVzW9PZFQ== X-Received: by 10.36.88.65 with SMTP id f62mr666349itb.89.1478371797262; Sat, 05 Nov 2016 11:49:57 -0700 (PDT) Received: from lylat (S01061859339e9903.ss.shawcable.net. [174.2.107.88]) by smtp.gmail.com with ESMTPSA id 77sm7011036iob.1.2016.11.05.11.49.56 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 05 Nov 2016 11:49:56 -0700 (PDT) From: Alex To: bug-gnu-emacs@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 -0600 Message-ID: <87zildsqwf.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) Attempting 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) ------------=_1511737383-945-7--