Skip to content

Commit 329ab91

Browse files
committed
Ruby: add test showing spurious call
1 parent a327802 commit 329ab91

File tree

6 files changed

+48
-13
lines changed

6 files changed

+48
-13
lines changed

ruby/ql/test/library-tests/modules/ancestors.expected

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,6 @@ modules_rec.rb:
204204
# 1| B::A
205205
#-----| super -> Object
206206

207-
# 4| A::B
208-
#-----| super -> Object
209-
210207
private.rb:
211208
# 1| E
212209
#-----| super -> Object
@@ -218,3 +215,7 @@ private.rb:
218215

219216
# 96| PrivateOverride2
220217
#-----| super -> PrivateOverride1
218+
219+
toplevel_self_singleton.rb:
220+
# 2| A::B
221+
#-----| super -> Object

ruby/ql/test/library-tests/modules/callgraph.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ getTarget
263263
| private.rb:104:1:104:20 | call to new | calls.rb:117:5:117:16 | new |
264264
| private.rb:104:1:104:28 | call to call_m1 | private.rb:91:3:93:5 | call_m1 |
265265
| private.rb:105:1:105:20 | call to new | calls.rb:117:5:117:16 | new |
266+
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method |
266267
unresolvedCall
267268
| calls.rb:26:9:26:18 | call to instance_m |
268269
| calls.rb:29:5:29:14 | call to instance_m |
@@ -347,6 +348,7 @@ unresolvedCall
347348
| private.rb:57:1:57:14 | call to private4 |
348349
| private.rb:100:7:100:29 | call to m1 |
349350
| private.rb:105:1:105:23 | call to m1 |
351+
| toplevel_self_singleton.rb:8:1:12:3 | call to do_something |
350352
privateMethod
351353
| calls.rb:1:1:3:3 | foo |
352354
| calls.rb:39:1:41:3 | call_instance_m |
@@ -377,6 +379,7 @@ privateMethod
377379
| private.rb:83:11:85:5 | m1 |
378380
| private.rb:87:11:89:5 | m2 |
379381
| private.rb:97:11:101:5 | m1 |
382+
| toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
380383
publicMethod
381384
| calls.rb:7:1:9:3 | bar |
382385
| calls.rb:13:1:15:3 | bar |
@@ -456,6 +459,7 @@ publicMethod
456459
| private.rb:38:3:39:5 | public3 |
457460
| private.rb:66:3:67:5 | public |
458461
| private.rb:91:3:93:5 | call_m1 |
462+
| toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method |
459463
protectedMethod
460464
| calls.rb:514:15:516:7 | foo |
461465
| calls.rb:522:15:524:7 | bar |

ruby/ql/test/library-tests/modules/methods.expected

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,9 +476,6 @@ lookupMethod
476476
| modules_rec.rb:1:1:2:3 | B::A | new | calls.rb:117:5:117:16 | new |
477477
| modules_rec.rb:1:1:2:3 | B::A | puts | calls.rb:102:5:102:30 | puts |
478478
| modules_rec.rb:1:1:2:3 | B::A | to_s | calls.rb:172:5:173:7 | to_s |
479-
| modules_rec.rb:4:1:5:3 | A::B | new | calls.rb:117:5:117:16 | new |
480-
| modules_rec.rb:4:1:5:3 | A::B | puts | calls.rb:102:5:102:30 | puts |
481-
| modules_rec.rb:4:1:5:3 | A::B | to_s | calls.rb:172:5:173:7 | to_s |
482479
| private.rb:1:1:49:3 | E | new | calls.rb:117:5:117:16 | new |
483480
| private.rb:1:1:49:3 | E | private1 | private.rb:2:11:3:5 | private1 |
484481
| private.rb:1:1:49:3 | E | private2 | private.rb:8:3:9:5 | private2 |
@@ -511,6 +508,9 @@ lookupMethod
511508
| private.rb:96:1:102:3 | PrivateOverride2 | private_on_main | private.rb:51:1:52:3 | private_on_main |
512509
| private.rb:96:1:102:3 | PrivateOverride2 | puts | calls.rb:102:5:102:30 | puts |
513510
| private.rb:96:1:102:3 | PrivateOverride2 | to_s | calls.rb:172:5:173:7 | to_s |
511+
| toplevel_self_singleton.rb:2:5:5:7 | A::B | new | calls.rb:117:5:117:16 | new |
512+
| toplevel_self_singleton.rb:2:5:5:7 | A::B | puts | calls.rb:102:5:102:30 | puts |
513+
| toplevel_self_singleton.rb:2:5:5:7 | A::B | to_s | calls.rb:172:5:173:7 | to_s |
514514
enclosingMethod
515515
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:3:3 | foo |
516516
| calls.rb:2:5:2:14 | self | calls.rb:1:1:3:3 | foo |
@@ -897,3 +897,5 @@ enclosingMethod
897897
| private.rb:100:7:100:22 | PrivateOverride1 | private.rb:97:11:101:5 | m1 |
898898
| private.rb:100:7:100:26 | call to new | private.rb:97:11:101:5 | m1 |
899899
| private.rb:100:7:100:29 | call to m1 | private.rb:97:11:101:5 | m1 |
900+
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
901+
| toplevel_self_singleton.rb:10:9:10:27 | self | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |

ruby/ql/test/library-tests/modules/modules.expected

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ getModule
7373
| modules.rb:116:7:117:9 | XX::YY |
7474
| modules.rb:123:1:124:3 | Test::Foo1::Bar::Baz |
7575
| modules_rec.rb:1:1:2:3 | B::A |
76-
| modules_rec.rb:4:1:5:3 | A::B |
7776
| private.rb:1:1:49:3 | E |
7877
| private.rb:62:1:80:3 | F |
7978
| private.rb:82:1:94:3 | PrivateOverride1 |
8079
| private.rb:96:1:102:3 | PrivateOverride2 |
80+
| toplevel_self_singleton.rb:2:5:5:7 | A::B |
8181
getADeclaration
8282
| calls.rb:21:1:34:3 | M | calls.rb:21:1:34:3 | M |
8383
| calls.rb:43:1:58:3 | C | calls.rb:43:1:58:3 | C |
@@ -93,12 +93,14 @@ getADeclaration
9393
| calls.rb:115:1:118:3 | Object | modules.rb:1:1:129:4 | modules.rb |
9494
| calls.rb:115:1:118:3 | Object | modules_rec.rb:1:1:11:26 | modules_rec.rb |
9595
| calls.rb:115:1:118:3 | Object | private.rb:1:1:105:40 | private.rb |
96+
| calls.rb:115:1:118:3 | Object | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
9697
| calls.rb:120:1:123:3 | Hash | calls.rb:120:1:123:3 | Hash |
9798
| calls.rb:125:1:138:3 | Array | calls.rb:125:1:138:3 | Array |
9899
| calls.rb:165:1:169:3 | S | calls.rb:165:1:169:3 | S |
99100
| calls.rb:171:1:174:3 | A | calls.rb:171:1:174:3 | A |
100101
| calls.rb:171:1:174:3 | A | instance_fields.rb:1:1:10:3 | A |
101102
| calls.rb:171:1:174:3 | A | modules_rec.rb:7:1:9:3 | A |
103+
| calls.rb:171:1:174:3 | A | toplevel_self_singleton.rb:1:1:6:3 | A |
102104
| calls.rb:176:1:179:3 | B | calls.rb:176:1:179:3 | B |
103105
| calls.rb:176:1:179:3 | B | instance_fields.rb:16:1:25:3 | B |
104106
| calls.rb:190:1:226:3 | Singletons | calls.rb:190:1:226:3 | Singletons |
@@ -154,11 +156,12 @@ getADeclaration
154156
| modules.rb:116:7:117:9 | XX::YY | modules.rb:116:7:117:9 | YY |
155157
| modules.rb:123:1:124:3 | Test::Foo1::Bar::Baz | modules.rb:123:1:124:3 | Baz |
156158
| modules_rec.rb:1:1:2:3 | B::A | modules_rec.rb:1:1:2:3 | A |
157-
| modules_rec.rb:4:1:5:3 | A::B | modules_rec.rb:4:1:5:3 | B |
158159
| private.rb:1:1:49:3 | E | private.rb:1:1:49:3 | E |
159160
| private.rb:62:1:80:3 | F | private.rb:62:1:80:3 | F |
160161
| private.rb:82:1:94:3 | PrivateOverride1 | private.rb:82:1:94:3 | PrivateOverride1 |
161162
| private.rb:96:1:102:3 | PrivateOverride2 | private.rb:96:1:102:3 | PrivateOverride2 |
163+
| toplevel_self_singleton.rb:2:5:5:7 | A::B | modules_rec.rb:4:1:5:3 | B |
164+
| toplevel_self_singleton.rb:2:5:5:7 | A::B | toplevel_self_singleton.rb:2:5:5:7 | B |
162165
getSuperClass
163166
| calls.rb:43:1:58:3 | C | calls.rb:115:1:118:3 | Object |
164167
| calls.rb:65:1:69:3 | D | calls.rb:43:1:58:3 | C |
@@ -204,13 +207,13 @@ getSuperClass
204207
| modules.rb:112:1:113:3 | YY | calls.rb:115:1:118:3 | Object |
205208
| modules.rb:116:7:117:9 | XX::YY | modules.rb:112:1:113:3 | YY |
206209
| modules_rec.rb:1:1:2:3 | B::A | calls.rb:115:1:118:3 | Object |
207-
| modules_rec.rb:4:1:5:3 | A::B | calls.rb:115:1:118:3 | Object |
208210
| private.rb:1:1:49:3 | E | calls.rb:115:1:118:3 | Object |
209211
| private.rb:82:1:94:3 | PrivateOverride1 | calls.rb:115:1:118:3 | Object |
210212
| private.rb:96:1:102:3 | PrivateOverride2 | private.rb:82:1:94:3 | PrivateOverride1 |
213+
| toplevel_self_singleton.rb:2:5:5:7 | A::B | calls.rb:115:1:118:3 | Object |
211214
getAPrependedModule
212215
| calls.rb:115:1:118:3 | Object | calls.rb:171:1:174:3 | A |
213-
| calls.rb:171:1:174:3 | A | modules_rec.rb:4:1:5:3 | A::B |
216+
| calls.rb:171:1:174:3 | A | toplevel_self_singleton.rb:2:5:5:7 | A::B |
214217
| modules.rb:101:1:105:3 | PrependTest | modules.rb:63:1:81:3 | Test |
215218
getAnIncludedModule
216219
| calls.rb:43:1:58:3 | C | calls.rb:21:1:34:3 | M |
@@ -429,6 +432,8 @@ resolveConstantWriteAccess
429432
| private.rb:62:1:80:3 | F | F |
430433
| private.rb:82:1:94:3 | PrivateOverride1 | PrivateOverride1 |
431434
| private.rb:96:1:102:3 | PrivateOverride2 | PrivateOverride2 |
435+
| toplevel_self_singleton.rb:1:1:6:3 | A | A |
436+
| toplevel_self_singleton.rb:2:5:5:7 | B | A::B |
432437
enclosingModule
433438
| calls.rb:1:1:3:3 | foo | calls.rb:1:1:550:40 | calls.rb |
434439
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:550:40 | calls.rb |
@@ -1645,3 +1650,13 @@ enclosingModule
16451650
| private.rb:105:1:105:16 | PrivateOverride2 | private.rb:1:1:105:40 | private.rb |
16461651
| private.rb:105:1:105:20 | call to new | private.rb:1:1:105:40 | private.rb |
16471652
| private.rb:105:1:105:23 | call to m1 | private.rb:1:1:105:40 | private.rb |
1653+
| toplevel_self_singleton.rb:1:1:6:3 | A | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
1654+
| toplevel_self_singleton.rb:2:5:5:7 | B | toplevel_self_singleton.rb:1:1:6:3 | A |
1655+
| toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method | toplevel_self_singleton.rb:2:5:5:7 | B |
1656+
| toplevel_self_singleton.rb:3:13:3:16 | self | toplevel_self_singleton.rb:2:5:5:7 | B |
1657+
| toplevel_self_singleton.rb:8:1:12:3 | call to do_something | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
1658+
| toplevel_self_singleton.rb:8:1:12:3 | self | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
1659+
| toplevel_self_singleton.rb:8:14:12:3 | do ... end | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
1660+
| toplevel_self_singleton.rb:9:5:11:7 | method_in_block | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
1661+
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |
1662+
| toplevel_self_singleton.rb:10:9:10:27 | self | toplevel_self_singleton.rb:1:1:12:4 | toplevel_self_singleton.rb |

ruby/ql/test/library-tests/modules/superclasses.expected

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,6 @@ modules_rec.rb:
195195
# 1| B::A
196196
#-----| -> Object
197197

198-
# 4| A::B
199-
#-----| -> Object
200-
201198
private.rb:
202199
# 1| E
203200
#-----| -> Object
@@ -209,3 +206,7 @@ private.rb:
209206

210207
# 96| PrivateOverride2
211208
#-----| -> PrivateOverride1
209+
210+
toplevel_self_singleton.rb:
211+
# 2| A::B
212+
#-----| -> Object
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module A
2+
class B
3+
def self.ab_singleton_method # should not be called
4+
end
5+
end
6+
end
7+
8+
do_something do
9+
def method_in_block
10+
ab_singleton_method # should not resolve to anything
11+
end
12+
end

0 commit comments

Comments
 (0)