Skip to content

Commit 398b07d

Browse files
authored
Merge pull request #2765 from ksss/tuple-length
Check tuple type length
2 parents fe6df89 + ae940d4 commit 398b07d

File tree

4 files changed

+8
-3
lines changed

4 files changed

+8
-3
lines changed

lib/rbs/test/type_check.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ def value(val, type)
364364
value(val, builder.expand_alias2(type.name.absolute!, type.args))
365365
when Types::Tuple
366366
Test.call(val, IS_AP, ::Array) &&
367+
type.types.length == val.length &&
367368
type.types.map.with_index {|ty, index| value(val[index], ty) }.all?
368369
when Types::Record
369370
Test::call(val, IS_AP, ::Hash) &&

stdlib/objspace/0/objspace.rbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ module ObjectSpace
411411
# ObjectSpace.reachable_objects_from(1)
412412
# #=> nil # 1 is not markable (heap managed) object
413413
#
414-
def self?.reachable_objects_from: (untyped) -> ([ untyped ] | nil)
414+
def self?.reachable_objects_from: (untyped) -> (Array[untyped] | nil)
415415

416416
# <!--
417417
# rdoc-file=ext/objspace/objspace.c

test/rbs/test/type_check_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ def to_int: () -> Integer
6767
refute typecheck.value(nil, parse_type("bool"))
6868
refute typecheck.value("", parse_type("bool"))
6969
refute typecheck.value(BasicObject.new, parse_type("bool"))
70+
71+
assert typecheck.value([1], parse_type("[Integer]"))
72+
refute typecheck.value([], parse_type("[Integer]"))
73+
refute typecheck.value([1, 2], parse_type("[Integer]"))
7074
end
7175
end
7276
end

test/stdlib/ObjectSpace_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,9 @@ def test_memsize_of_all
181181
end
182182

183183
def test_reachable_objects_from
184-
assert_send_type "(untyped) -> [untyped]",
184+
assert_send_type "(untyped) -> Array[untyped]",
185185
ObjectSpace, :reachable_objects_from, "dummy"
186-
assert_send_type "(untyped) -> [untyped]",
186+
assert_send_type "(untyped) -> Array[untyped]",
187187
ObjectSpace, :reachable_objects_from, ["dummy", "dummy2"]
188188
assert_send_type "(untyped) -> nil",
189189
ObjectSpace, :reachable_objects_from, nil

0 commit comments

Comments
 (0)