Subject: Re: bug#30910: 26.0.91; Incorrect Edebug spec for def-edebug-spec

From: Lars Ingebrigtsen <[email-masked]>
Date: Sun, 14 Jul 2019 16:16:01 +0200

Gemini Lasswell <[email-masked]> writes:

> def-edebug-spec has an Edebug spec, which fails to match the valid
> Edebug specs in lisp/emacs-lisp/cl-macs.el.
>
> To reproduce, load cl-macs.el and:
>
> M-x edebug-all-defs RET
> M-x eval-buffer RET
>
> Result: edebug-syntax-error: Invalid read syntax: "Expected one of",
> "nil", edebug-spec-p, "t", "0", (&rest edebug-spec)

This bug is still present on the trunk.

But you say that it has an edebug spec, but:

(symbol-plist 'def-edebug-spec)
=> nil

I thought that perhaps saying something like

(eval-and-compile
  (put 'def-edebug-spec 'edebug-form-spec '(sexp sexp)))

might be a fix, but it doesn't seem to have any effect...

Here's the backtrace:

Debugger entered--Lisp error: (invalid-read-syntax "Expected one of" "nil" ede
  signal(invalid-read-syntax ("Expected one of" "nil" edebug-spec-p "t" "0" (&
  edebug-syntax-error("Expected one of" "nil" edebug-spec-p "t" "0" (&rest ede
  apply(edebug-syntax-error ("Expected one of" "nil" edebug-spec-p "t" "0" (&r
  edebug-no-match((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&option
  apply(edebug-no-match (((([&rest cl-lambda-arg] [&optional ["&optional" cl-&
  edebug-match-&or((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&optio
  edebug-match-specs((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&opt
  edebug-match-specs((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&opt
  edebug-match-specs((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&opt
  edebug-match-specs((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&opt
  edebug-match-sublist((((([&rest cl-lambda-arg] [&optional ["&optional" cl-&o
  edebug-match-list((((def-edebug-spec cl-lambda-list (([&rest cl-lambda-arg] 
  edebug-match-one-spec((((def-edebug-spec cl-lambda-list (([&rest cl-lambda-a
  edebug-match-specs((((def-edebug-spec cl-lambda-list (([&rest cl-lambda-arg]
  edebug-match((((def-edebug-spec cl-lambda-list (([&rest cl-lambda-arg] [&opt
  edebug-make-form-wrapper((((def-edebug-spec cl-lambda-list (([&rest cl-lambd
  edebug-read-and-maybe-wrap-form1()
  edebug-read-and-maybe-wrap-form()

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no