diff --git a/lib/typeprof/core/env/method_entity.rb b/lib/typeprof/core/env/method_entity.rb index 7e4f9a66..af9729fb 100644 --- a/lib/typeprof/core/env/method_entity.rb +++ b/lib/typeprof/core/env/method_entity.rb @@ -3,6 +3,7 @@ class MethodEntity def initialize @builtin = nil @decls = Set[] + @overloading_decls = Set[] @defs = Set[] @aliases = {} @method_call_boxes = Set[] @@ -12,11 +13,19 @@ def initialize attr_accessor :builtin def add_decl(decl) - @decls << decl + if decl.overloading + @overloading_decls << decl + else + @decls << decl + end end def remove_decl(decl) - @decls.delete(decl) || raise + if decl.overloading + @overloading_decls.delete(decl) || raise + else + @decls.delete(decl) || raise + end end def add_def(mdef) diff --git a/scenario/rbs/overloading.rb b/scenario/rbs/overloading.rb new file mode 100644 index 00000000..c1e27878 --- /dev/null +++ b/scenario/rbs/overloading.rb @@ -0,0 +1,18 @@ +## update: test.rbs +class Foo + def check: () -> Integer +end + +class Bar < Foo + def check: ... +end + +## update: test.rb +def check + Bar.new.check +end + +## assert +class Object + def check: -> Integer +end