[ruby-core:115192] [Ruby master Feature#19978] NoMethodError and large objects should not create unwieldy error messages
From:
"sawa (Tsuyoshi Sawada) via ruby-core" <ruby-core@...>
Date:
2023-10-29 05:51:47 UTC
List:
ruby-core #115192
Issue #19978 has been updated by sawa (Tsuyoshi Sawada).
If displaying the instance is not important for a NoMethodError, then getting rid of it entirely may make it simpler.
```rb
-e:1:in `<main>': undefined method `/' for Array instance (NoMethodError)
(1..1e3).to_a/=3
^
```
----------------------------------------
Feature #19978: NoMethodError and large objects should not create unwieldy error messages
https://bugs.ruby-lang.org/issues/19978#change-105104
* Author: ConorOBR (Conor O'Brien)
* Status: Open
* Priority: Normal
----------------------------------------
# Description
Currently, in the error message for `NoMethodError`, the object in question is inspected and displayed to the user. This results in unwieldy error messages for large objects. This comes up most often for me when working with large hashes, but in principal it affects any object with an `inspect` method which can produce large output.
# Reproduce
There are many ways to reproduce this, but here is one. (Scales with the size of the object, so this gets out of hand quickly with, say, `1e7` as the upperbound.)
```rb
(1..1e3).to_a/=3
```
# `ruby -v`
```
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x64-mingw-ucrt]
```
# Desired Behavior
Some kind of elision, e.g., for the above, the desired output could be something like
```rb
-e:1:in `<main>': undefined method `/' for [1, 2, 3, ..., 998, 999, 1000]:Array (NoMethodError)
(1..1e3).to_a/=3
^
```
At the very least, not showing the entire object (even if that means showing none of it) if the `inspect` exceeds a certain length would be preferable.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/