GNU bug report logs - #64459
30.0.50; Edebug can't instrument certain syntax-propertize-rules forms

Previous Next

Package: emacs;

Reported by: Philipp Stephani <p.stephani2 <at> gmail.com>

Date: Tue, 4 Jul 2023 13:36:01 UTC

Severity: normal

Found in version 30.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #17 received at 64459 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 64459 <at> debbugs.gnu.org
Subject: Re: bug#64459: 30.0.50; Edebug can't instrument certain
 syntax-propertize-rules forms
Date: Tue, 04 Jul 2023 16:56:36 -0400
> (defun foo () (syntax-propertize-rules ((concat ""))))
>
> Now try to instrument this using C-u C-M-x.  This will lead to an error
> "Eager macro-expansion failure":
>
> Debugger entered--Lisp error: (error "Eager macro-expansion failure: (void-function edeb...")
>   signal(error ("Eager macro-expansion failure: (void-function edeb..."))

I think the patch below should fix this problem.
Can you confirm that it fixes it for you in a more realistic setting?


        Stefan


diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index d610fa005cc..002a24af18b 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -249,11 +249,12 @@ syntax-propertize-rules
 Note: There may be at most nine back-references in the REGEXPs of
 all RULES in total."
   (declare (debug (&rest &or symbolp    ;FIXME: edebug this eval step.
-                         (form &rest
-                               (numberp
-                                [&or stringp ;FIXME: Use &wrap
-                                     ("prog1" [&or stringp def-form] def-body)
-                                     def-form])))))
+                         (def-form
+                          &rest
+                          (numberp
+                           [&or stringp ;FIXME: Use &wrap
+                                ("prog1" [&or stringp form] def-body)
+                                form])))))
   (let ((newrules nil))
     (while rules
       (if (symbolp (car rules))





This bug report was last modified 2 years and 38 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.