@@ -3844,4 +3844,65 @@ def bar = ""
38443844 end
38453845 end
38463846 end
3847+
3848+ def test_inline_decl__module_self
3849+ SignatureManager . new do |manager |
3850+ manager . files [ Pathname ( "foo.rbs" ) ] = <<~RBS
3851+ interface _StringConvertible
3852+ def to_str: () -> String
3853+ end
3854+ RBS
3855+
3856+ manager . add_ruby_file ( "a.rb" , <<~RUBY )
3857+ # @rbs module-self: _StringConvertible
3858+ module M
3859+ # @rbs () -> String
3860+ def display
3861+ to_str
3862+ end
3863+ end
3864+ RUBY
3865+
3866+ manager . build do |env |
3867+ builder = DefinitionBuilder . new ( env : env )
3868+
3869+ builder . build_instance ( type_name ( "::M" ) ) . tap do |definition |
3870+ assert_equal Set [ :to_str , :display ] , Set . new ( definition . methods . keys )
3871+ assert_method_definition definition . methods [ :to_str ] , [ "() -> ::String" ] , accessibility : :public
3872+ assert_method_definition definition . methods [ :display ] , [ "() -> ::String" ] , accessibility : :public
3873+ end
3874+ end
3875+ end
3876+ end
3877+
3878+ def test_inline_decl__module_self_multiple
3879+ SignatureManager . new do |manager |
3880+ manager . files [ Pathname ( "foo.rbs" ) ] = <<~RBS
3881+ interface _Each[T]
3882+ def each: () { (T) -> void } -> void
3883+ end
3884+
3885+ interface _Size
3886+ def size: () -> Integer
3887+ end
3888+ RBS
3889+
3890+ manager . add_ruby_file ( "a.rb" , <<~RUBY )
3891+ # @rbs module-self: _Each[String]
3892+ # @rbs module-self: _Size
3893+ module M
3894+ end
3895+ RUBY
3896+
3897+ manager . build do |env |
3898+ builder = DefinitionBuilder . new ( env : env )
3899+
3900+ builder . build_instance ( type_name ( "::M" ) ) . tap do |definition |
3901+ assert_equal Set [ :each , :size ] , Set . new ( definition . methods . keys )
3902+ assert_method_definition definition . methods [ :each ] , [ "() { (::String) -> void } -> void" ] , accessibility : :public
3903+ assert_method_definition definition . methods [ :size ] , [ "() -> ::Integer" ] , accessibility : :public
3904+ end
3905+ end
3906+ end
3907+ end
38473908end
0 commit comments