[ruby-core:75955] [Ruby trunk Bug#12482] ArgumentError.new(nil) should give a better description
From:
eike@...
Date:
2016-06-11 21:41:04 UTC
List:
ruby-core #75955
Issue #12482 has been reported by Eike Dierks.
----------------------------------------
Bug #12482: ArgumentError.new(nil) should give a better description
https://bugs.ruby-lang.org/issues/12482
* Author: Eike Dierks
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v:
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Currently:
~~~
ArgumentError.new(nil) => #<ArgumentError: ArgumentError>
ArgumentError.new(nil).to_s => "ArgumentError"
ArgumentError.new(nil).inspect => "#<ArgumentError: ArgumentError>"
~~~
I want to suggest to change this to "ArgumentError(nil)" instead.
Rational:
For testing arguments, I frequently use:
~~~
raise ArgumentError.new(arg) unless ExpectedClass === arg
~~~
However when arg is nil, this raises "ArgumentError" while raising "ArgumentError(nil)" would be much nicer.
This would differentiate between ArgumentError.new() and ArgumentError.new(nil)
Suggested changes
I't looks like ArgumentError#initialize inherits Exception#initialize
I'd like to suggest to differentiate between Exception.new() and Exception.new(nil)
~~~
def Exception.new(msg = :__Exception_msg_arg_undefined___)
case arg
when :__Exception_msg_arg_undefined___
# msg = "ClassName"
when nil
# msg = "ClassName(nil)"
end
~~~
Impact
I believe this should not break existing code as no code should rely on the string returned.
--
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>