@@ -66,6 +66,10 @@ def setup
6666 @mod . record_location @top_level
6767 end
6868
69+ def using_prism_ruby_parser?
70+ RDoc ::Parser ::Ruby . name == 'RDoc::Parser::PrismRuby'
71+ end
72+
6973 def teardown
7074 super
7175
@@ -161,13 +165,17 @@ def test_add_file_relative
161165
162166 def test_all_classes_and_modules
163167 expected = %w[
164- C1 C10 C10::C11 C11 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C8::S1 C9 C9::A C9::B
168+ C1 C10 C10::C11 C11 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C9 C9::A C9::B
165169 Child
166170 M1 M1::M2
167171 Object
168172 Parent
169173 ]
170174
175+ # C8::S1 does not exist. It should not be in the list.
176+ # class C8; class << something; class S1; end; end; end
177+ expected = ( expected + [ 'C8::S1' ] ) . sort unless using_prism_ruby_parser?
178+
171179 assert_equal expected ,
172180 @store . all_classes_and_modules . map { |m | m . full_name } . sort
173181 end
@@ -213,12 +221,16 @@ def test_class_path
213221
214222 def test_classes
215223 expected = %w[
216- C1 C10 C10::C11 C11 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C8::S1 C9 C9::A C9::B
224+ C1 C10 C10::C11 C11 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C9 C9::A C9::B
217225 Child
218226 Object
219227 Parent
220228 ]
221229
230+ # C8::S1 does not exist. It should not be in the list.
231+ # class C8; class << something; class S1; end; end; end
232+ expected = ( expected + [ 'C8::S1' ] ) . sort unless using_prism_ruby_parser?
233+
222234 assert_equal expected , @store . all_classes . map { |m | m . full_name } . sort
223235 end
224236
@@ -550,6 +562,13 @@ def test_load_class
550562 end
551563
552564 def test_load_single_class
565+ if using_prism_ruby_parser?
566+ # Class defined inside singleton class is not documentable.
567+ # @c8_s1 should be nil because C8::S1 does not exist.
568+ assert_nil @c8_s1
569+ return
570+ end
571+
553572 @s . save_class @c8_s1
554573 @s . classes_hash . clear
555574
0 commit comments