Skip to content

Commit 4bf6703

Browse files
committed
Support RBS overloading method declaration
1 parent 0e7b531 commit 4bf6703

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

lib/typeprof/core/env/method_entity.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ class MethodEntity
33
def initialize
44
@builtin = nil
55
@decls = Set[]
6+
@overloading_decls = Set[]
67
@defs = Set[]
78
@aliases = {}
89
@method_call_boxes = Set[]
@@ -12,11 +13,19 @@ def initialize
1213
attr_accessor :builtin
1314

1415
def add_decl(decl)
15-
@decls << decl
16+
if decl.overloading
17+
@overloading_decls << decl
18+
else
19+
@decls << decl
20+
end
1621
end
1722

1823
def remove_decl(decl)
19-
@decls.delete(decl) || raise
24+
if decl.overloading
25+
@overloading_decls.delete(decl) || raise
26+
else
27+
@decls.delete(decl) || raise
28+
end
2029
end
2130

2231
def add_def(mdef)

scenario/rbs/overloading.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
## update: test.rbs
2+
class Foo
3+
def check: () -> Integer
4+
end
5+
6+
class Bar < Foo
7+
def check: ...
8+
end
9+
10+
## update: test.rb
11+
def check
12+
Bar.new.check
13+
end
14+
15+
## assert
16+
class Object
17+
def check: -> Integer
18+
end

0 commit comments

Comments
 (0)