Skip to content

Commit 69b7fa5

Browse files
test: Add tests for blocks, lambdas and procs. (#102)
1 parent dac2eea commit 69b7fa5

File tree

3 files changed

+189
-1
lines changed

3 files changed

+189
-1
lines changed

scip_indexer/SCIPIndexer.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ struct OwnedLocal {
128128
string toString(const core::GlobalState &gs, core::FileRef file) {
129129
// 32-bits => if there are 10k methods in a single file, the chance of at least one
130130
// colliding pair is about 1.1%, assuming even distribution. That seems OK.
131-
return fmt::format("local {:x}~#{}", counter, ::fnv1a_32(owner.name(gs).show(gs)));
131+
return fmt::format("local {}~#{}", counter, ::fnv1a_32(owner.name(gs).show(gs)));
132132
}
133133
};
134134

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# typed: true
2+
3+
def blk
4+
y = 0
5+
[].each { |x|
6+
y += x
7+
}
8+
[].each do |x|
9+
y += x
10+
end
11+
end
12+
13+
def lam
14+
y = 0
15+
l1 = ->(x) {
16+
y += x
17+
}
18+
l2 = lambda { |x|
19+
y += x
20+
}
21+
l3 = ->(x:) {
22+
y += x
23+
}
24+
l4 = lambda { |x:|
25+
y += x
26+
}
27+
l1.call(1)
28+
l2.call(2)
29+
l3.call(x: 3)
30+
l4.call(x: 4)
31+
end
32+
33+
def prc
34+
y = 0
35+
p1 = Proc.new { |x|
36+
y += x
37+
}
38+
p2 = proc { |x|
39+
y += x
40+
}
41+
p3 = Proc.new { |x:|
42+
y += x
43+
}
44+
p4 = proc { |x:|
45+
y += x
46+
}
47+
p1.call(1)
48+
p2.call(2)
49+
p3.call(x: 3)
50+
p4.call(x: 4)
51+
end
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# typed: true
2+
3+
def blk
4+
# ^^^ definition [..] Object#blk().
5+
y = 0
6+
# ^ definition local 1~#1472469056
7+
[].each { |x|
8+
# ^ definition local 2~#1472469056
9+
y += x
10+
# ^ reference local 1~#1472469056
11+
# ^ reference (write) local 1~#1472469056
12+
# ^^^^^^ reference local 1~#1472469056
13+
# ^ reference local 2~#1472469056
14+
}
15+
[].each do |x|
16+
# ^ definition local 3~#1472469056
17+
y += x
18+
# ^ reference local 1~#1472469056
19+
# ^ reference (write) local 1~#1472469056
20+
# ^^^^^^ reference local 1~#1472469056
21+
# ^ reference local 3~#1472469056
22+
end
23+
end
24+
25+
def lam
26+
# ^^^ definition [..] Object#lam().
27+
y = 0
28+
# ^ definition local 1~#1499497673
29+
l1 = ->(x) {
30+
# ^^ definition local 4~#1499497673
31+
# ^^ reference [..] Kernel#
32+
# ^ definition local 3~#1499497673
33+
y += x
34+
# ^ reference local 1~#1499497673
35+
# ^ reference (write) local 1~#1499497673
36+
# ^^^^^^ reference local 1~#1499497673
37+
# ^ reference local 3~#1499497673
38+
}
39+
l2 = lambda { |x|
40+
# ^^ definition local 6~#1499497673
41+
# ^ definition local 5~#1499497673
42+
y += x
43+
# ^ reference (write) local 1~#1499497673
44+
# ^ reference local 1~#1499497673
45+
# ^^^^^^ reference local 1~#1499497673
46+
# ^ reference local 5~#1499497673
47+
}
48+
l3 = ->(x:) {
49+
# ^^ definition local 9~#1499497673
50+
# ^^ reference [..] Kernel#
51+
# ^^ definition local 8~#1499497673
52+
y += x
53+
# ^ reference local 1~#1499497673
54+
# ^ reference (write) local 1~#1499497673
55+
# ^^^^^^ reference local 1~#1499497673
56+
# ^ reference local 8~#1499497673
57+
}
58+
l4 = lambda { |x:|
59+
# ^^ definition local 11~#1499497673
60+
# ^^ definition local 10~#1499497673
61+
y += x
62+
# ^ reference local 1~#1499497673
63+
# ^ reference (write) local 1~#1499497673
64+
# ^^^^^^ reference local 1~#1499497673
65+
# ^ reference local 10~#1499497673
66+
}
67+
l1.call(1)
68+
# ^^ reference local 4~#1499497673
69+
# ^^^^ reference [..] Proc1#call().
70+
l2.call(2)
71+
# ^^ reference local 6~#1499497673
72+
# ^^^^ reference [..] Proc1#call().
73+
l3.call(x: 3)
74+
# ^^ reference local 9~#1499497673
75+
# ^^^^ reference [..] Proc#call().
76+
l4.call(x: 4)
77+
# ^^ reference local 11~#1499497673
78+
# ^^^^ reference [..] Proc#call().
79+
end
80+
81+
def prc
82+
# ^^^ definition [..] Object#prc().
83+
y = 0
84+
# ^ definition local 1~#1283111692
85+
p1 = Proc.new { |x|
86+
# ^^ definition local 4~#1283111692
87+
# ^^^^ reference [..] Proc#
88+
# ^^^ reference [..] `<Class:Proc>`#new().
89+
# ^ definition local 3~#1283111692
90+
y += x
91+
# ^ reference local 1~#1283111692
92+
# ^ reference (write) local 1~#1283111692
93+
# ^^^^^^ reference local 1~#1283111692
94+
# ^ reference local 3~#1283111692
95+
}
96+
p2 = proc { |x|
97+
# ^^ definition local 6~#1283111692
98+
# ^ definition local 5~#1283111692
99+
y += x
100+
# ^ reference local 1~#1283111692
101+
# ^ reference (write) local 1~#1283111692
102+
# ^^^^^^ reference local 1~#1283111692
103+
# ^ reference local 5~#1283111692
104+
}
105+
p3 = Proc.new { |x:|
106+
# ^^ definition local 9~#1283111692
107+
# ^^^^ reference [..] Proc#
108+
# ^^^ reference [..] `<Class:Proc>`#new().
109+
# ^^ definition local 8~#1283111692
110+
y += x
111+
# ^ reference local 1~#1283111692
112+
# ^ reference (write) local 1~#1283111692
113+
# ^^^^^^ reference local 1~#1283111692
114+
# ^ reference local 8~#1283111692
115+
}
116+
p4 = proc { |x:|
117+
# ^^ definition local 11~#1283111692
118+
# ^^ definition local 10~#1283111692
119+
y += x
120+
# ^ reference local 1~#1283111692
121+
# ^ reference (write) local 1~#1283111692
122+
# ^^^^^^ reference local 1~#1283111692
123+
# ^ reference local 10~#1283111692
124+
}
125+
p1.call(1)
126+
# ^^ reference local 4~#1283111692
127+
# ^^^^ reference [..] Proc#call().
128+
p2.call(2)
129+
# ^^ reference local 6~#1283111692
130+
# ^^^^ reference [..] Proc1#call().
131+
p3.call(x: 3)
132+
# ^^ reference local 9~#1283111692
133+
# ^^^^ reference [..] Proc#call().
134+
p4.call(x: 4)
135+
# ^^ reference local 11~#1283111692
136+
# ^^^^ reference [..] Proc#call().
137+
end

0 commit comments

Comments
 (0)