[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#66912: With `require', the byte compiler reports the wrong file for
From: |
Stefan Monnier |
Subject: |
bug#66912: With `require', the byte compiler reports the wrong file for errors. |
Date: |
Fri, 03 Nov 2023 12:09:03 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
> The pertinent error information is discarded by one of two
> condition-cases in the macro displaying-byte-compile-warnings in
> emacs-lisp/bytecomp.el.
Kind of, yes. But the info available there is hard to use: basically at
that point we could get the error message and the backtrace, which is
what we get when we set `byte-compile-debug`. In the case where
`byte-compile-debug` is not set, we don't really want to display
a backtrace, so we'd have to "analyze" that backtrace to try and extract
a useful error message from it, which is hard&brittle.
> If these condition-case's are disabled (for example by spiking the
> enclosing `if' forms)
By "spiking" do you mean setting `byte-compile-debug`?
> This appears to be a fundamental problem with condition-case. When an
> error occurs, the stack gets unwound before the error handlers have a
> chance to analyse it.
[ This is going a bit on a tangent, but I think it would be good to add
some support for something like Common-Lisp's `handler-bind`,
i.e. error handlers that are run before unwinding the stack (so they
can capture the stack trace as well as the value of dynbound vars at
the moment the error occurs, for example).
It would make it possible for ERT to refrain from activating
`debug-on-error`, for example (which it does in order to capture the
backtrace at the time of the error). ]
I think for this specific problem being discussed (which is indeed
a fairly common occurrence in my experience), the better solution is to
change `load` so it adds the "context" (i.e. filename and ideally also
the approximate file position info) to errors.
[ This may require something like `handler-bind`. ]
Stefan
- bug#66912: With `require', the byte compiler reports the wrong file for errors., Alan Mackenzie, 2023/11/03
- bug#66912: With `require', the byte compiler reports the wrong file for errors.,
Stefan Monnier <=
- bug#66912: With `require', the byte compiler reports the wrong file for errors., Alan Mackenzie, 2023/11/12
- bug#66912: With `require', the byte compiler reports the wrong file for errors., Stefan Monnier, 2023/11/12
- bug#66912: With `require', the byte compiler reports the wrong file for errors., Alan Mackenzie, 2023/11/12
- bug#66912: With `require', the byte compiler reports the wrong file for errors., Stefan Monnier, 2023/11/12
- bug#66912: With `require', the byte compiler reports the wrong file for errors., Drew Adams, 2023/11/12