From 20bb5783f88d0c5659846adfd11bb63f55b76991 Mon Sep 17 00:00:00 2001 From: Alex <468442+4lllex@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:14:09 -0400 Subject: [PATCH] Fix incorrect method visibility when merging with existing store cache Running Store#save with already existing cache incorrectly sets method visibility to `:private` on all methods. --- lib/rdoc/code_object/class_module.rb | 1 + test/rdoc/rdoc_store_test.rb | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib/rdoc/code_object/class_module.rb b/lib/rdoc/code_object/class_module.rb index 76ded527a1..148c8a806d 100644 --- a/lib/rdoc/code_object/class_module.rb +++ b/lib/rdoc/code_object/class_module.rb @@ -538,6 +538,7 @@ def merge(class_module) merge_collections method_list, cm.method_list, other_files do |add, meth| if add then + @visibility = meth.visibility add_method meth else @method_list.delete meth diff --git a/test/rdoc/rdoc_store_test.rb b/test/rdoc/rdoc_store_test.rb index 76f2a079a5..4c288e1e42 100644 --- a/test/rdoc/rdoc_store_test.rb +++ b/test/rdoc/rdoc_store_test.rb @@ -951,6 +951,14 @@ def test_save_class_merge_constant assert_empty result.constants end + def test_save_class_merge_method_visibility + @s.save_class @klass + assert_equal :public, @meth.visibility + + @s.save_class @klass # save again to trigger ClassModule#merge + assert_equal :public, @meth.visibility + end + def test_save_class_methods @s.save_class @klass