@@ -3373,7 +3373,6 @@ class TypedAttributeTest
33733373 end
33743374 end
33753375
3376-
33773376 def test_ruby_attribute_members_multiple_names
33783377 SignatureManager . new do |manager |
33793378 manager . add_ruby_file ( "multiple_attributes.rb" , <<~RUBY )
@@ -3405,4 +3404,81 @@ class MultipleAttributeTest
34053404 end
34063405 end
34073406 end
3407+
3408+ def test_ruby_attribute_members_docs
3409+ SignatureManager . new do |manager |
3410+ manager . add_ruby_file ( "a.rb" , <<~RUBY )
3411+ class MultipleAttributeTest
3412+ # This is a document for attribute
3413+ #
3414+ # @rbs () -> String
3415+ attr_reader :test #: String
3416+
3417+ # Line 1
3418+ #
3419+ # Line 2
3420+ # @rbs () -> String -- this is ignored
3421+ #
3422+ # Line 3
3423+ attr_reader :test2 #: untyped
3424+ end
3425+ RUBY
3426+
3427+ manager . build do |env |
3428+ builder = DefinitionBuilder . new ( env : env )
3429+
3430+ builder . build_instance ( type_name ( "::MultipleAttributeTest" ) ) . tap do |definition |
3431+ definition . methods [ :test ] . tap do |method |
3432+ assert_equal [ "This is a document for attribute\n " ] , method . comments . map ( &:string )
3433+ end
3434+
3435+ definition . methods [ :test2 ] . tap do |method |
3436+ assert_equal [ "Line 1\n \n Line 2\n \n Line 3" ] , method . comments . map ( &:string )
3437+ end
3438+ end
3439+ end
3440+ end
3441+ end
3442+
3443+ def test_ruby_def_members_docs
3444+ SignatureManager . new do |manager |
3445+ manager . add_ruby_file ( "a.rb" , <<~RUBY )
3446+ class MultipleAttributeTest
3447+ # This is a document for foo method
3448+ #
3449+ # @rbs return: String?
3450+ def foo = nil
3451+
3452+ # Line 1
3453+ #
3454+ # Line 2
3455+ # @rbs () -> Integer
3456+ #
3457+ # Line 3
3458+ def bar = 123
3459+
3460+ # @rbs return: untyped
3461+ def baz = nil
3462+ end
3463+ RUBY
3464+
3465+ manager . build do |env |
3466+ builder = DefinitionBuilder . new ( env : env )
3467+
3468+ builder . build_instance ( type_name ( "::MultipleAttributeTest" ) ) . tap do |definition |
3469+ definition . methods [ :foo ] . tap do |method |
3470+ assert_equal [ "This is a document for foo method\n " ] , method . comments . map ( &:string )
3471+ end
3472+
3473+ definition . methods [ :bar ] . tap do |method |
3474+ assert_equal [ "Line 1\n \n Line 2\n \n Line 3" ] , method . comments . map ( &:string )
3475+ end
3476+
3477+ definition . methods [ :baz ] . tap do |method |
3478+ assert_equal [ ] , method . comments
3479+ end
3480+ end
3481+ end
3482+ end
3483+ end
34083484end
0 commit comments