Skip to content

Commit 8c2c28d

Browse files
committed
Ruby: add test showing missing superclass edge
1 parent 471a596 commit 8c2c28d

File tree

5 files changed

+59
-0
lines changed

5 files changed

+59
-0
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,3 +239,13 @@ toplevel_self_singleton.rb:
239239
#-----| super -> Object
240240

241241
# 24| Good
242+
243+
unresolved_subclass.rb:
244+
# 1| ResolvableBaseClass
245+
#-----| super -> Object
246+
247+
# 4| ...::Subclass1
248+
#-----| super -> ResolvableBaseClass
249+
250+
# 7| ...::Subclass2
251+
#-----| super -> Object

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,15 @@ lookupMethod
599599
| toplevel_self_singleton.rb:2:5:5:7 | A::B | new | calls.rb:117:5:117:16 | new |
600600
| toplevel_self_singleton.rb:2:5:5:7 | A::B | puts | calls.rb:102:5:102:30 | puts |
601601
| toplevel_self_singleton.rb:2:5:5:7 | A::B | to_s | calls.rb:172:5:173:7 | to_s |
602+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | new | calls.rb:117:5:117:16 | new |
603+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | puts | calls.rb:102:5:102:30 | puts |
604+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | to_s | calls.rb:172:5:173:7 | to_s |
605+
| unresolved_subclass.rb:4:1:5:3 | ...::Subclass1 | new | calls.rb:117:5:117:16 | new |
606+
| unresolved_subclass.rb:4:1:5:3 | ...::Subclass1 | puts | calls.rb:102:5:102:30 | puts |
607+
| unresolved_subclass.rb:4:1:5:3 | ...::Subclass1 | to_s | calls.rb:172:5:173:7 | to_s |
608+
| unresolved_subclass.rb:7:1:8:3 | ...::Subclass2 | new | calls.rb:117:5:117:16 | new |
609+
| unresolved_subclass.rb:7:1:8:3 | ...::Subclass2 | puts | calls.rb:102:5:102:30 | puts |
610+
| unresolved_subclass.rb:7:1:8:3 | ...::Subclass2 | to_s | calls.rb:172:5:173:7 | to_s |
602611
enclosingMethod
603612
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:3:3 | foo |
604613
| calls.rb:2:5:2:14 | self | calls.rb:1:1:3:3 | foo |

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ getModule
8585
| private.rb:96:1:102:3 | PrivateOverride2 |
8686
| toplevel_self_singleton.rb:2:5:5:7 | A::B |
8787
| toplevel_self_singleton.rb:24:1:34:3 | Good |
88+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass |
89+
| unresolved_subclass.rb:4:1:5:3 | ...::Subclass1 |
90+
| unresolved_subclass.rb:7:1:8:3 | ...::Subclass2 |
8891
getADeclaration
8992
| calls.rb:21:1:34:3 | M | calls.rb:21:1:34:3 | M |
9093
| calls.rb:43:1:58:3 | C | calls.rb:43:1:58:3 | C |
@@ -101,6 +104,7 @@ getADeclaration
101104
| calls.rb:115:1:118:3 | Object | modules_rec.rb:1:1:11:26 | modules_rec.rb |
102105
| calls.rb:115:1:118:3 | Object | private.rb:1:1:105:40 | private.rb |
103106
| calls.rb:115:1:118:3 | Object | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
107+
| calls.rb:115:1:118:3 | Object | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
104108
| calls.rb:120:1:123:3 | Hash | calls.rb:120:1:123:3 | Hash |
105109
| calls.rb:125:1:138:3 | Array | calls.rb:125:1:138:3 | Array |
106110
| calls.rb:165:1:169:3 | S | calls.rb:165:1:169:3 | S |
@@ -176,6 +180,9 @@ getADeclaration
176180
| toplevel_self_singleton.rb:2:5:5:7 | A::B | modules_rec.rb:4:1:5:3 | B |
177181
| toplevel_self_singleton.rb:2:5:5:7 | A::B | toplevel_self_singleton.rb:2:5:5:7 | B |
178182
| toplevel_self_singleton.rb:24:1:34:3 | Good | toplevel_self_singleton.rb:24:1:34:3 | Good |
183+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass |
184+
| unresolved_subclass.rb:4:1:5:3 | ...::Subclass1 | unresolved_subclass.rb:4:1:5:3 | Subclass1 |
185+
| unresolved_subclass.rb:7:1:8:3 | ...::Subclass2 | unresolved_subclass.rb:7:1:8:3 | Subclass2 |
179186
getSuperClass
180187
| calls.rb:43:1:58:3 | C | calls.rb:115:1:118:3 | Object |
181188
| calls.rb:65:1:69:3 | D | calls.rb:43:1:58:3 | C |
@@ -231,6 +238,9 @@ getSuperClass
231238
| private.rb:82:1:94:3 | PrivateOverride1 | calls.rb:115:1:118:3 | Object |
232239
| private.rb:96:1:102:3 | PrivateOverride2 | private.rb:82:1:94:3 | PrivateOverride1 |
233240
| toplevel_self_singleton.rb:2:5:5:7 | A::B | calls.rb:115:1:118:3 | Object |
241+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | calls.rb:115:1:118:3 | Object |
242+
| unresolved_subclass.rb:4:1:5:3 | ...::Subclass1 | unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass |
243+
| unresolved_subclass.rb:7:1:8:3 | ...::Subclass2 | calls.rb:115:1:118:3 | Object |
234244
getAPrependedModule
235245
| calls.rb:115:1:118:3 | Object | calls.rb:171:1:174:3 | A |
236246
| calls.rb:171:1:174:3 | A | toplevel_self_singleton.rb:2:5:5:7 | A::B |
@@ -373,6 +383,7 @@ resolveConstantReadAccess
373383
| private.rb:100:7:100:22 | PrivateOverride1 | PrivateOverride1 |
374384
| private.rb:104:1:104:16 | PrivateOverride2 | PrivateOverride2 |
375385
| private.rb:105:1:105:16 | PrivateOverride2 | PrivateOverride2 |
386+
| unresolved_subclass.rb:4:40:4:58 | ResolvableBaseClass | ResolvableBaseClass |
376387
resolveConstantWriteAccess
377388
| calls.rb:21:1:34:3 | M | M |
378389
| calls.rb:43:1:58:3 | C | C |
@@ -469,6 +480,9 @@ resolveConstantWriteAccess
469480
| toplevel_self_singleton.rb:2:5:5:7 | B | A::B |
470481
| toplevel_self_singleton.rb:18:1:18:8 | MyStruct | MyStruct |
471482
| toplevel_self_singleton.rb:24:1:34:3 | Good | Good |
483+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | ResolvableBaseClass |
484+
| unresolved_subclass.rb:4:1:5:3 | Subclass1 | UnresolvedNamespace::Subclass1 |
485+
| unresolved_subclass.rb:7:1:8:3 | Subclass2 | UnresolvedNamespace::Subclass2 |
472486
enclosingModule
473487
| calls.rb:1:1:3:3 | foo | calls.rb:1:1:616:32 | calls.rb |
474488
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:616:32 | calls.rb |
@@ -1792,3 +1806,11 @@ enclosingModule
17921806
| toplevel_self_singleton.rb:30:13:30:19 | self | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
17931807
| toplevel_self_singleton.rb:31:13:31:20 | call to call_you | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
17941808
| toplevel_self_singleton.rb:31:13:31:20 | self | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
1809+
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1810+
| unresolved_subclass.rb:4:1:5:3 | Subclass1 | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1811+
| unresolved_subclass.rb:4:7:4:25 | UnresolvedNamespace | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1812+
| unresolved_subclass.rb:4:40:4:58 | ResolvableBaseClass | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1813+
| unresolved_subclass.rb:7:1:8:3 | Subclass2 | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1814+
| unresolved_subclass.rb:7:7:7:25 | UnresolvedNamespace | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1815+
| unresolved_subclass.rb:7:40:7:58 | UnresolvedNamespace | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |
1816+
| unresolved_subclass.rb:7:40:7:69 | Subclass1 | unresolved_subclass.rb:1:1:8:4 | unresolved_subclass.rb |

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,13 @@ toplevel_self_singleton.rb:
230230
#-----| -> Object
231231

232232
# 24| Good
233+
234+
unresolved_subclass.rb:
235+
# 1| ResolvableBaseClass
236+
#-----| -> Object
237+
238+
# 4| ...::Subclass1
239+
#-----| -> ResolvableBaseClass
240+
241+
# 7| ...::Subclass2
242+
#-----| -> Object
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class ResolvableBaseClass
2+
end
3+
4+
class UnresolvedNamespace::Subclass1 < ResolvableBaseClass
5+
end
6+
7+
class UnresolvedNamespace::Subclass2 < UnresolvedNamespace::Subclass1
8+
end

0 commit comments

Comments
 (0)