diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index c7c0fb99e..385957c3f 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -296,7 +296,8 @@ def self.retrieve_completion_data(input, bind: IRB.conf[:MAIN_CONTEXT].workspace candidates.uniq! end if doc_namespace - "#{rec.class.name}#{sep}#{candidates.find{ |i| i == message }}" + rec_class = rec.is_a?(Module) ? rec : rec.class + "#{rec_class.name}#{sep}#{candidates.find{ |i| i == message }}" else select_message(receiver, message, candidates, sep) end diff --git a/test/irb/test_completion.rb b/test/irb/test_completion.rb index 260b8a889..c534301bc 100644 --- a/test/irb/test_completion.rb +++ b/test/irb/test_completion.rb @@ -86,8 +86,15 @@ def test_complete_require_relative def test_complete_variable str_example = '' + str_example.clear # suppress "assigned but unused variable" warning assert_include(IRB::InputCompletor.retrieve_completion_data("str_examp", bind: binding), "str_example") assert_equal(IRB::InputCompletor.retrieve_completion_data("str_example", bind: binding, doc_namespace: true), "String") + assert_equal(IRB::InputCompletor.retrieve_completion_data("str_example.to_s", bind: binding, doc_namespace: true), "String.to_s") + end + + def test_complete_class_method + assert_include(IRB::InputCompletor.retrieve_completion_data("String.new", bind: binding), "String.new") + assert_equal(IRB::InputCompletor.retrieve_completion_data("String.new", bind: binding, doc_namespace: true), "String.new") end end end