From 9576cdfff036799931f58ccb4299c72589c8fc04 Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Thu, 2 Jul 2026 02:43:50 -0700 Subject: [PATCH] Fix NoMethodError in MethodAttr#inspect for cache-loaded aliases Signed-off-by: Sai Asish Y --- lib/rdoc/code_object/method_attr.rb | 7 ++++++- test/rdoc/code_object/method_attr_test.rb | 24 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/rdoc/code_object/method_attr.rb b/lib/rdoc/code_object/method_attr.rb index 50a16cf719..c8729328fb 100644 --- a/lib/rdoc/code_object/method_attr.rb +++ b/lib/rdoc/code_object/method_attr.rb @@ -297,7 +297,12 @@ def full_name end def inspect # :nodoc: - alias_for = @is_alias_for ? " (alias for #{@is_alias_for.name})" : nil + alias_for = + if @is_alias_for.respond_to? :name then + " (alias for #{@is_alias_for.name})" + elsif Array === @is_alias_for then + " (alias for #{@is_alias_for.last})" + end visibility = self.visibility visibility = "forced #{visibility}" if force_documentation "#<%s:0x%x %s (%s)%s>" % [ diff --git a/test/rdoc/code_object/method_attr_test.rb b/test/rdoc/code_object/method_attr_test.rb index b3fa6c4b81..31442c5b8a 100644 --- a/test/rdoc/code_object/method_attr_test.rb +++ b/test/rdoc/code_object/method_attr_test.rb @@ -201,6 +201,30 @@ def test_pretty_print end end + def test_inspect_alias_from_store + temp_dir do |tmpdir| + s = RDoc::RI::Store.new(RDoc::Options.new, path: tmpdir) + + top_level = s.add_file 'file.rb' + meth_bang = RDoc::AnyMethod.new 'method!' + meth_bang.record_location top_level + + meth_bang_alias = RDoc::Alias.new 'method!', 'method_bang', '' + meth_bang_alias.record_location top_level + + klass = top_level.add_class RDoc::NormalClass, 'Object' + klass.add_method meth_bang + + meth_bang.add_alias meth_bang_alias, klass + + s.save + + meth_alias_from_store = s.load_method 'Object', '#method_bang' + + assert_includes meth_alias_from_store.inspect, 'alias for method!' + end + end + def test_to_s assert_equal 'RDoc::AnyMethod: C1#m', @c1_m.to_s assert_equal 'RDoc::AnyMethod: C2#b', @c2_b.to_s