[#106355] [Ruby master Bug#18373] RBS build failure: '/include/x86_64-linux/ruby/config.h', needed by 'constants.o'. — "vo.x (Vit Ondruch)" <noreply@...>
Issue #18373 has been reported by vo.x (Vit Ondruch).
28 messages
2021/12/01
[ruby-core:106588] [Ruby master Feature#18370] Call Exception#full_message to print exceptions reaching the top-level
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2021-12-09 10:08:52 UTC
List:
ruby-core #106588
Issue #18370 has been updated by Eregon (Benoit Daloze).
#18367 wants the opposite, i.e., not escape control chars.
As already mentioned, JRuby & TruffleRuby both currently already have the behavior to not escape control chars.
BTW, wouldn't that change even escape \n? (looking at https://github.com/ruby/ruby/blob/6ff9fcdfa8c6d55474e6de70ad241625b9265a5b/string.c#L6340-L6356 + `("\x00"..." ").to_a`)
----------------------------------------
Feature #18370: Call Exception#full_message to print exceptions reaching the top-level
https://bugs.ruby-lang.org/issues/18370#change-95252
* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
----------------------------------------
Extracted from https://bugs.ruby-lang.org/issues/18296#note-6.
I think this a clear gain to improve consistency in how exceptions are shown, and it also makes it easier to evolve exception formatting in the future.
It would also solve https://bugs.ruby-lang.org/issues/18367.
https://bugs.ruby-lang.org/issues/18296#note-7 has more specifics, I'll copy here for convenience:
mame (Yusuke Endoh) wrote in #note-6:
> Does this proposal include that the ruby interpreter should use `#full_message` to show the error information? This is an incompatibility, is it acceptable?
Yes, let's fix that.
I don't think there is much if any compatibility issue here.
The output of the uncaught exception handler is already the same as the default Exception#full_message AFAIK, let's actually call it.
TruffleRuby already calls `exc.full_message` for the uncaught exception handler.
If the custom `exc.full_message` raises an exception, then it's best to report that exception *and* the original exception using the default `Exception#full_message` (written in C).
This is the current TruffleRuby output for that case and I think it's clear:
```
$ ruby -e 'class Foo < Exception; def full_message(**); raise "bar"; end; end; raise Foo, "message"'
Error while formatting Ruby exception:
-e:1:in `full_message': bar (RuntimeError)
from <internal:core> core/truffle/exception_operations.rb:183:in `get_formatted_backtrace'
Original Ruby exception:
-e:1:in `<main>': message (Foo)
```
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>