Skip to content

Commit fe043d4

Browse files
authored
Merge pull request #2565 from ksss/typecheck-value-is_a
Support BasicObject to avoid NoMethodError for `RBS::Test::TypeCheck`
2 parents 47a4ccf + afa0c6f commit fe043d4

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

lib/rbs/test/type_check.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ def value(val, type)
245245
when Types::Bases::Any
246246
true
247247
when Types::Bases::Bool
248-
val.is_a?(TrueClass) || val.is_a?(FalseClass)
248+
Test.call(val, IS_AP, TrueClass) || Test.call(val, IS_AP, FalseClass)
249249
when Types::Bases::Top
250250
true
251251
when Types::Bases::Bottom
@@ -323,7 +323,7 @@ def value(val, type)
323323
rescue TypeError
324324
return false
325325
end
326-
val.is_a?(singleton_class)
326+
Test.call(val, IS_AP, singleton_class)
327327
when Types::Interface
328328
if (definition = builder.build_interface(type.name.absolute!))
329329
definition.methods.each.all? do |method_name, method|

test/rbs/test/type_check_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def to_int: () -> Integer
4949
assert typecheck.value(String, parse_type("singleton(::String)"))
5050
assert typecheck.value(String, parse_type("singleton(::Object)"))
5151
refute typecheck.value(String, parse_type("singleton(::Integer)"))
52+
refute typecheck.value(BasicObject.new, parse_type("singleton(::BasicObject)"))
5253

5354
assert typecheck.value(3, parse_type("::M::t"))
5455
assert typecheck.value(3, parse_type("::M::s"))
@@ -65,6 +66,7 @@ def to_int: () -> Integer
6566
assert typecheck.value(false, parse_type("bool"))
6667
refute typecheck.value(nil, parse_type("bool"))
6768
refute typecheck.value("", parse_type("bool"))
69+
refute typecheck.value(BasicObject.new, parse_type("bool"))
6870
end
6971
end
7072
end

0 commit comments

Comments
 (0)