Skip to content

Commit 789f591

Browse files
committed
Ruby: add another spurious call edge test
1 parent 1476efb commit 789f591

File tree

4 files changed

+45
-9
lines changed

4 files changed

+45
-9
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ getTarget
261261
| private.rb:104:1:104:20 | call to new | calls.rb:117:5:117:16 | new |
262262
| private.rb:104:1:104:28 | call to call_m1 | private.rb:91:3:93:5 | call_m1 |
263263
| private.rb:105:1:105:20 | call to new | calls.rb:117:5:117:16 | new |
264+
| toplevel_self_singleton.rb:13:9:13:27 | call to ab_singleton_method | toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method |
265+
| toplevel_self_singleton.rb:19:9:19:27 | call to ab_singleton_method | toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method |
264266
unresolvedCall
265267
| calls.rb:23:9:23:19 | call to singleton_m |
266268
| calls.rb:26:9:26:18 | call to instance_m |
@@ -346,8 +348,9 @@ unresolvedCall
346348
| private.rb:57:1:57:14 | call to private4 |
347349
| private.rb:100:7:100:29 | call to m1 |
348350
| private.rb:105:1:105:23 | call to m1 |
349-
| toplevel_self_singleton.rb:8:1:12:3 | call to do_something |
351+
| toplevel_self_singleton.rb:8:1:15:3 | call to do_something |
350352
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method |
353+
| toplevel_self_singleton.rb:17:12:21:1 | call to new |
351354
privateMethod
352355
| calls.rb:1:1:3:3 | foo |
353356
| calls.rb:39:1:41:3 | call_instance_m |
@@ -459,6 +462,8 @@ publicMethod
459462
| private.rb:66:3:67:5 | public |
460463
| private.rb:91:3:93:5 | call_m1 |
461464
| toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method |
465+
| toplevel_self_singleton.rb:12:5:14:7 | method_in_block |
466+
| toplevel_self_singleton.rb:18:5:20:7 | method_in_struct |
462467
protectedMethod
463468
| calls.rb:514:15:516:7 | foo |
464469
| calls.rb:522:15:524:7 | bar |

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,3 +899,7 @@ enclosingMethod
899899
| private.rb:100:7:100:29 | call to m1 | private.rb:97:11:101:5 | m1 |
900900
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
901901
| toplevel_self_singleton.rb:10:9:10:27 | self | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
902+
| toplevel_self_singleton.rb:13:9:13:27 | call to ab_singleton_method | toplevel_self_singleton.rb:12:5:14:7 | method_in_block |
903+
| toplevel_self_singleton.rb:13:9:13:27 | self | toplevel_self_singleton.rb:12:5:14:7 | method_in_block |
904+
| toplevel_self_singleton.rb:19:9:19:27 | call to ab_singleton_method | toplevel_self_singleton.rb:18:5:20:7 | method_in_struct |
905+
| toplevel_self_singleton.rb:19:9:19:27 | self | toplevel_self_singleton.rb:18:5:20:7 | method_in_struct |

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

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ 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 |
96+
| calls.rb:115:1:118:3 | Object | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
9797
| calls.rb:120:1:123:3 | Hash | calls.rb:120:1:123:3 | Hash |
9898
| calls.rb:125:1:138:3 | Array | calls.rb:125:1:138:3 | Array |
9999
| calls.rb:165:1:169:3 | S | calls.rb:165:1:169:3 | S |
@@ -434,6 +434,7 @@ resolveConstantWriteAccess
434434
| private.rb:96:1:102:3 | PrivateOverride2 | PrivateOverride2 |
435435
| toplevel_self_singleton.rb:1:1:6:3 | A | A |
436436
| toplevel_self_singleton.rb:2:5:5:7 | B | A::B |
437+
| toplevel_self_singleton.rb:17:1:17:8 | MyStruct | MyStruct |
437438
enclosingModule
438439
| calls.rb:1:1:3:3 | foo | calls.rb:1:1:550:40 | calls.rb |
439440
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:550:40 | calls.rb |
@@ -1650,13 +1651,30 @@ enclosingModule
16501651
| private.rb:105:1:105:16 | PrivateOverride2 | private.rb:1:1:105:40 | private.rb |
16511652
| private.rb:105:1:105:20 | call to new | private.rb:1:1:105:40 | private.rb |
16521653
| 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:1:1:6:3 | A | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
16541655
| toplevel_self_singleton.rb:2:5:5:7 | B | toplevel_self_singleton.rb:1:1:6:3 | A |
16551656
| toplevel_self_singleton.rb:3:9:4:11 | ab_singleton_method | toplevel_self_singleton.rb:2:5:5:7 | B |
16561657
| 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 |
1658+
| toplevel_self_singleton.rb:8:1:15:3 | call to do_something | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1659+
| toplevel_self_singleton.rb:8:1:15:3 | self | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1660+
| toplevel_self_singleton.rb:8:14:15:3 | do ... end | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1661+
| toplevel_self_singleton.rb:9:5:11:7 | method_in_block | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1662+
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1663+
| toplevel_self_singleton.rb:10:9:10:27 | self | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1664+
| toplevel_self_singleton.rb:12:5:14:7 | method_in_block | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1665+
| toplevel_self_singleton.rb:12:9:12:12 | (no string representation) | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1666+
| toplevel_self_singleton.rb:13:9:13:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1667+
| toplevel_self_singleton.rb:13:9:13:27 | self | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1668+
| toplevel_self_singleton.rb:17:1:17:8 | MyStruct | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1669+
| toplevel_self_singleton.rb:17:1:21:1 | ... = ... | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1670+
| toplevel_self_singleton.rb:17:12:17:17 | Struct | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1671+
| toplevel_self_singleton.rb:17:12:21:1 | call to new | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1672+
| toplevel_self_singleton.rb:17:23:17:26 | :foo | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1673+
| toplevel_self_singleton.rb:17:23:17:26 | foo | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1674+
| toplevel_self_singleton.rb:17:29:17:32 | :bar | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1675+
| toplevel_self_singleton.rb:17:29:17:32 | bar | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1676+
| toplevel_self_singleton.rb:17:35:21:1 | { ... } | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1677+
| toplevel_self_singleton.rb:18:5:20:7 | method_in_struct | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1678+
| toplevel_self_singleton.rb:18:9:18:12 | (no string representation) | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1679+
| toplevel_self_singleton.rb:19:9:19:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |
1680+
| toplevel_self_singleton.rb:19:9:19:27 | self | toplevel_self_singleton.rb:1:1:21:2 | toplevel_self_singleton.rb |

ruby/ql/test/library-tests/modules/toplevel_self_singleton.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,13 @@ def self.ab_singleton_method # should not be called
99
def method_in_block
1010
ab_singleton_method # should not resolve to anything
1111
end
12+
def self.method_in_block
13+
ab_singleton_method # should not resolve to anything
14+
end
1215
end
16+
17+
MyStruct = Struct.new(:foo, :bar) {
18+
def self.method_in_struct
19+
ab_singleton_method # should not resolve to anything
20+
end
21+
}

0 commit comments

Comments
 (0)