summaryrefslogtreecommitdiff
path: root/lib/irb/completion.rb
diff options
context:
space:
mode:
authorGo <[email protected]>2024-03-15 00:40:59 +0900
committergit <[email protected]>2024-03-14 15:41:03 +0000
commitd10afe03575446fa8d561fdc21ca3bed90df6e94 (patch)
tree26fd54cf4c11a44cc4d2da5ed1714de41a2bd888 /lib/irb/completion.rb
parent3822ca9884e38bae0def0dc440df080ad16069ad (diff)
[ruby/irb] Rescue from exceptions raised by #name
(https://github.com/ruby/irb/pull/899) * Rescue from exceptions raised by #name Irb might terminate if the class overwrites `name` and raise errors. This commit rescue irb from termination. * fix for other unknown patterns https://github.com/ruby/irb/commit/35b87cf893
Diffstat (limited to 'lib/irb/completion.rb')
-rw-r--r--lib/irb/completion.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb
index ceb6eb087a..b3813e8939 100644
--- a/lib/irb/completion.rb
+++ b/lib/irb/completion.rb
@@ -388,7 +388,7 @@ module IRB
if doc_namespace
rec_class = rec.is_a?(Module) ? rec : rec.class
- "#{rec_class.name}#{sep}#{candidates.find{ |i| i == message }}"
+ "#{rec_class.name}#{sep}#{candidates.find{ |i| i == message }}" rescue nil
else
select_message(receiver, message, candidates, sep)
end
@@ -418,7 +418,7 @@ module IRB
vars = (bind.local_variables | bind.eval_instance_variables).collect{|m| m.to_s}
perfect_match_var = vars.find{|m| m.to_s == input}
if perfect_match_var
- eval("#{perfect_match_var}.class.name", bind)
+ eval("#{perfect_match_var}.class.name", bind) rescue nil
else
candidates = (bind.eval_methods | bind.eval_private_methods | bind.local_variables | bind.eval_instance_variables | bind.eval_class_constants).collect{|m| m.to_s}
candidates |= ReservedWords