From b87c0d0d8a7644ffb35d9404f19cf3122c9848c0 Mon Sep 17 00:00:00 2001 From: ksss Date: Thu, 15 Jan 2026 14:51:11 +0900 Subject: [PATCH] Check type arguments size --- lib/rbs/test/type_check.rb | 3 +++ test/stdlib/Array_test.rb | 2 +- test/stdlib/ObjectSpace_WeakKeyMap_test.rb | 2 +- test/stdlib/ObjectSpace_test.rb | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/rbs/test/type_check.rb b/lib/rbs/test/type_check.rb index 243e5b4ba..49ab44190 100644 --- a/lib/rbs/test/type_check.rb +++ b/lib/rbs/test/type_check.rb @@ -264,6 +264,9 @@ def value(val, type) klass = get_class(type.name) or return false if params = builder.env.normalized_module_class_entry(type.name.absolute!)&.type_params args = AST::TypeParam.normalize_args(params, type.args) + if args.size != params.size + return false + end unless args == type.args type = Types::ClassInstance.new(name: type.name, args: args, location: type.location) end diff --git a/test/stdlib/Array_test.rb b/test/stdlib/Array_test.rb index 8c2410f2a..efa734f65 100644 --- a/test/stdlib/Array_test.rb +++ b/test/stdlib/Array_test.rb @@ -162,7 +162,7 @@ def test_at end def test_bsearch - assert_send_type "() -> Enumerable[String, Integer?]", [0,1,2,3,4], + assert_send_type "() -> Enumerator[Integer]", [0,1,2,3,4], :bsearch assert_send_type "() { (Integer) -> (true | false) } -> Integer", diff --git a/test/stdlib/ObjectSpace_WeakKeyMap_test.rb b/test/stdlib/ObjectSpace_WeakKeyMap_test.rb index d37f93eb6..aaf1bf51b 100644 --- a/test/stdlib/ObjectSpace_WeakKeyMap_test.rb +++ b/test/stdlib/ObjectSpace_WeakKeyMap_test.rb @@ -40,7 +40,7 @@ def test_clear map = ObjectSpace::WeakKeyMap.new() assert_send_type( - "() -> ::ObjectSpace::WeakKeyMap", + "() -> ::ObjectSpace::WeakKeyMap[::String, ::Integer]", map, :clear ) end diff --git a/test/stdlib/ObjectSpace_test.rb b/test/stdlib/ObjectSpace_test.rb index 25016e09e..93ce0bfa6 100644 --- a/test/stdlib/ObjectSpace_test.rb +++ b/test/stdlib/ObjectSpace_test.rb @@ -49,7 +49,7 @@ def test_garbage_collect def test_undefine_finalizer assert_send_type "(String) -> String", ObjectSpace, :undefine_finalizer, +"abc" - assert_send_type "(Array) -> Array", + assert_send_type "(Array[untyped]) -> Array[untyped]", ObjectSpace, :undefine_finalizer, [] end