GNU bug report logs -
#74294
Master: debug-on-error is ineffective whilst requiring a file from the byte compiler.
Previous Next
Full log
Message #8 received at 74294 <at> debbugs.gnu.org (full text, mbox):
> Create the following files:
>
> 1: ~/test-byte-compile-errors.el:
> #########################################################################
> ;; -*- lexical-binding:t -*-
> (require 'test-byte-compile-errors-2 "~/test-byte-compile-errors-2")
> #########################################################################
>
> 2: ~/test-byte-compile-errors-2.el:
> #########################################################################
> ;; -*- lexical-binding:t -*-
> (car 'baz)
>
> (provide 'test-byte-compile-errors-2)
> #########################################################################
>
> (Note the erroneous (car 'baz) in this file.)
>
> (i) emacs -Q
> (ii) M-: (setq debug-on-error t) RET
> (iii) M-x byte-compile-file RET ~/test-byte-compile-errors.el RET
>
> (iv) The error message:
>
> test-byte-compile-errors.el:2:11: Error: Wrong type argument: listp, baz
>
> is displayed. The debugger is not run. This is surely a bug.
>
> (Note also, the file name displayed is not that where the error is: See
> bug#66912.)
>
> #########################################################################
>
> Diagnosis
> ---------
>
> In the function bytecomp--displaying-warnings (bytecomp.el), a blocking
> condition-case is set up, except when byte-compile-debug is non-nil.
> This prevents the debugger running. The problem is, the effect of this
> condition-case prevails even outside the byte compiler whilst loading a
> file with `require'.
Hmm... whether it's "outside the byte compiler" or not is debatable.
[ FWIW, I've been annoyed by the behavior as well, but just decided to set
`byte-compile-debug` to t in my init file, and life is bliss since then. ]
> Set up one or more handler-binds around the parts of Fload that evaluate
> the contents of the file being loaded. In the event of an error, the
> handler-bind handler would trigger, test debug-on-error, and if it's set
> appropriately, call the debugger, then quit. Otherwise, the handler
> would return, and the error handling would eventually reach the
> condition-case set up by bytecomp--displaying-warnings.
Is the problem specific to `load`, really?
What about errors within `eval-when-compile` or during the expansion of
one of the macros?
Also, do you really want to bring up the debugger in cases like
(eval-when-compile
(condition-case nil
(require ...)
(error ...)))
which I've seen used in a few packages out there?
Stefan
This bug report was last modified 219 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.