aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorNobuhiro IMAI <nov@yo.rim.or.jp>2021-01-07 19:21:06 +0900
committeraycabta <aycabta@gmail.com>2021-01-08 13:25:18 +0900
commited3264d37abc54e3aade229751a9165ffd37ca2e (patch)
treed0f34e7a313031841a53765120fb542faeaaeae9 /lib
parentf59477523053b67eac409b6595bfe5db962aab3d (diff)
downloadruby-ed3264d37abc54e3aade229751a9165ffd37ca2e.tar.gz
[ruby/irb] refactoring an error handling in `IRB::Inspector`
* moved rescue clause to `#inspect_value` to catch all failures in inspectors * test with all (currently five kind of) inspect modes - tweaked the input due to only `Marshal` can inspect(dump) a `BasicObject` https://github.com/ruby/irb/commit/9d112fab8e
Diffstat (limited to 'lib')
-rw-r--r--lib/irb/inspector.rb16
1 files changed, 7 insertions, 9 deletions
diff --git a/lib/irb/inspector.rb b/lib/irb/inspector.rb
index 66837f1390..92de2830bc 100644
--- a/lib/irb/inspector.rb
+++ b/lib/irb/inspector.rb
@@ -100,21 +100,19 @@ module IRB # :nodoc:
# Proc to call when the input is evaluated and output in irb.
def inspect_value(v)
@inspect.call(v)
+ rescue
+ puts "(Object doesn't support #inspect)"
+ ''
end
end
Inspector.def_inspector([false, :to_s, :raw]){|v| v.to_s}
Inspector.def_inspector([:p, :inspect]){|v|
- begin
- result = v.inspect
- if IRB.conf[:MAIN_CONTEXT]&.use_colorize? && Color.inspect_colorable?(v)
- result = Color.colorize_code(result)
- end
- result
- rescue NoMethodError
- puts "(Object doesn't support #inspect)"
- ''
+ result = v.inspect
+ if IRB.conf[:MAIN_CONTEXT]&.use_colorize? && Color.inspect_colorable?(v)
+ result = Color.colorize_code(result)
end
+ result
}
Inspector.def_inspector([true, :pp, :pretty_inspect], proc{require "irb/color_printer"}){|v|
if IRB.conf[:MAIN_CONTEXT]&.use_colorize?