From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Gemini Lasswell Newsgroups: gmane.emacs.bugs Subject: bug#24753: 26.0.50; Error using Edebug on code that uses cl-defmethod Date: Fri, 21 Oct 2016 08:15:02 -0700 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1477063002 22799 195.159.176.226 (21 Oct 2016 15:16:42 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 21 Oct 2016 15:16:42 +0000 (UTC) To: 24753@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Oct 21 17:16:38 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bxbYI-0002Li-Nm for geb-bug-gnu-emacs@m.gmane.org; Fri, 21 Oct 2016 17:16:10 +0200 Original-Received: from localhost ([::1]:32962 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bxbYK-0001YV-Se for geb-bug-gnu-emacs@m.gmane.org; Fri, 21 Oct 2016 11:16:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bxbYE-0001YA-AB for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:16:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bxbYA-0005Nx-5A for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:16:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:57915) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1bxbYA-0005Nm-1q for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:16:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bxbY9-0006Ic-Sx for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:16:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Gemini Lasswell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 21 Oct 2016 15:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 24753 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.147706293924180 (code B ref -1); Fri, 21 Oct 2016 15:16:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 21 Oct 2016 15:15:39 +0000 Original-Received: from localhost ([127.0.0.1]:45081 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bxbXn-0006Hv-9e for submit@debbugs.gnu.org; Fri, 21 Oct 2016 11:15:39 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:56163) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bxbXl-0006Hg-H8 for submit@debbugs.gnu.org; Fri, 21 Oct 2016 11:15:38 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bxbXe-0005GJ-JU for submit@debbugs.gnu.org; Fri, 21 Oct 2016 11:15:32 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:33200) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bxbXe-0005GF-FX for submit@debbugs.gnu.org; Fri, 21 Oct 2016 11:15:30 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47127) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bxbXc-0001Wa-MB for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:15:30 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bxbXY-0005F3-I8 for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:15:28 -0400 Original-Received: from aibo.runbox.com ([91.220.196.211]:32928) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bxbXY-0005EV-Az for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 11:15:24 -0400 Original-Received: from [10.9.9.210] (helo=mailfront10.runbox.com) by bars.runbox.com with esmtp (Exim 4.71) (envelope-from ) id 1bxbXW-0003iB-QN for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 17:15:22 +0200 Original-Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=rainbow.local) by mailfront10.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1bxbXE-00031l-PT for bug-gnu-emacs@gnu.org; Fri, 21 Oct 2016 17:15:05 +0200 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:124777 Archived-At: Edebug gets confused after instrumenting multiple methods with the same name created by cl-defgeneric and cl-defmethod. To reproduce, save the following bit of code (which is an excerpt from cl-generic-tests.el) to bug.el: (require 'cl-generic) (fmakunbound 'foo) (cl-defgeneric foo (x y)) (cl-defgeneric (setf foo) (v y z) "My generic doc.") (cl-defmethod (setf foo) (v (y t) z) (list v y z)) (cl-defmethod (setf foo) (v (_y (eql 4)) z) (list v "four!" z)) (defun foo-bug () (message "%s" (setf (foo 'a 'b) 'v))) (foo-bug) Steps to reproduce: 1. emacs -Q 2. C-x C-f bug.el RET 3. M-x edebug-all-defs RET 4. M-x eval-buffer RET 5. g Result: edebug--display: Args out of range: [44 51 61 62], 4 The trouble seems to be that Edebug is attaching its per-definition data for both methods to the same symbol, setf@foo. I found that changing the relevant line in cl-defmethod's Edebug spec from this: [&or name ("setf" :name setf name)] to this: [&or symbolp ("setf" symbolp)] makes the problem go away by creating new anonymous symbols for the methods. Although if you want to try this out interactively, you'll need to set edebug-form-data to nil for the buffer, because otherwise Edebug will remember the previous name you gave the definition and reuse it. While I was looking at the Edebug spec for cl-defmethod, I also noticed that it uses list to match the argument list. Edebug is going to treat list as a predicate, and list is going to return a non-nil value for whatever is in that match position. I don't know of any real problem that could cause, but using listp would be more correct. In GNU Emacs 26.0.50.4 (x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G1004)) of 2016-10-20 built on rainbow.local Repository revision: 9e1e257ea8605354d15b4bd93e0af6188aae40db Windowing system distributor 'Apple', version 10.3.1404 Recent messages: Mark set Replaced 8 occurrences Quit nil Edebug: setf@foo [2 times] Edebug: foo-bug Go... edebug--display: Args out of range: [44 51 61 62], 4 Configured using: 'configure --with-ns --disable-ns-self-contained' Configured features: JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: global-undo-tree-mode: t undo-tree-mode: t diff-auto-refine-mode: t ivy-mode: t buffer-face-mode: t yas-global-mode: t yas-minor-mode: t pyvenv-mode: t shell-dirtrack-mode: t nameless-mode: t beacon-mode: t rainbow-mode: t column-enforce-mode: t volatile-highlights-mode: t region-state-mode: t ws-butler-global-mode: t ws-butler-mode: t show-smartparens-global-mode: t show-smartparens-mode: t smartparens-global-mode: t smartparens-global-strict-mode: t smartparens-strict-mode: t smartparens-mode: t which-key-mode: t modalka-mode: t recentf-mode: t global-auto-revert-mode: t winner-mode: t display-time-mode: t savehist-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t size-indication-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow emacsbug cl-generic-tests testcover flow-fill jka-compr shr svg dom browse-url qp nndraft nnmh nnfolder utf-7 epa-file sort smiley gnus-cite mail-extr gnus-async gnus-bcklg gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-ml gnus-msg disp-table nndoc gnus-cache gnus-dup gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus nnheader mm-archive message rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs mailabbrev gmm-utils mailheader crm debbugs-gnu add-log zoom-window highlight-symbol undo-tree diff eieio-opt speedbar sb-image ezimage dframe tabify shrink-whitespace dash-at-point visual-regexp expand-region text-mode-expansions python-el-fgallina-expansions er-basic-expansions expand-region-core expand-region-custom ielm comment-dwim-2 ert find-func ewoc debug pp edebug vc-git diff-mode colir flx dired dired-loaddefs counsel esh-util swiper ivy delsel ffap face-remap guess-style smtpmail sendmail mail-utils yasnippet highlight-indentation flymake company help-fns radix-tree elpy pyvenv elpy-refactor smartparens-python python tramp-sh tramp tramp-compat tramp-loaddefs trampver shell pcomplete format-spec json map grep compile files-x cus-edit virtualenvwrapper gud comint nameless lisp-mnt ace-window avy beacon smex ido deft debbugs soap-client mm-decode mm-bodies mm-encode warnings rng-xsd rng-dt rng-util xsd-regexp xml rainbow-mode ansi-color color s hydra lv column-enforce-mode etags xref project volatile-highlights region-state ws-butler smartparens-config smartparens thingatpt dash which-key modalka quail smart-mode-line-dark-theme smart-mode-line advice rich-minority whiteboard-theme classic-theme recentf tree-widget wid-edit autorevert filenotify winner ring time cus-start cus-load savehist cap-words superword subword use-package diminish bind-key easy-mmode finder-inf edmacro kmacro info network-stream starttls url-http tls gnutls mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm subr-x puny url-cache url-auth url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap cl package epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote kqueue cocoa ns multi-tty make-network-process emacs) Memory information: ((conses 16 1177625 172614) (symbols 48 51408 177) (miscs 40 3885 2827) (strings 32 171089 94705) (string-bytes 1 4748760) (vectors 16 79548) (vector-slots 8 1384454 66001) (floats 8 5239 1496) (intervals 56 62071 8434) (buffers 976 47))