Skip to content

Commit bdeeb32

Browse files
committed
Rust: Add path resolution tests
1 parent fdb0c6e commit bdeeb32

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@ private module ResolveTest implements TestSig {
2525

2626
private predicate item(ItemNode i, string value) {
2727
exists(string filepath, int line, boolean inMacro | itemAt(i, filepath, line, inMacro) |
28-
commmentAt(value, filepath, line)
29-
or
30-
not commmentAt(_, filepath, line) and
31-
value = i.getName()
28+
if i instanceof SourceFile
29+
then value = i.getFile().getBaseName()
30+
else (
31+
commmentAt(value, filepath, line)
32+
or
33+
not commmentAt(_, filepath, line) and
34+
value = i.getName()
35+
)
3236
)
3337
}
3438

rust/ql/test/library-tests/path-resolution/my2/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ pub use nested2::nested7::nested8::{ // $ item=I118
1515

1616
use nested2::nested5::nested6::f as nested6_f; // $ item=I116
1717

18+
use std::ops::Deref; // $ item=Deref
19+
1820
pub mod my3;
1921

2022
#[path = "renamed.rs"]

rust/ql/test/library-tests/path-resolution/my2/my3/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ use super::super::h; // $ item=I25
88
use super::g; // $ item=I9
99

1010
use super::nested6_f; // $ item=I116
11+
12+
use super::*; // $ item=mod.rs
13+
14+
trait MyTrait: Deref {} // $ MISSING: item=Deref

rust/ql/test/library-tests/path-resolution/path-resolution.expected

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ mod
3333
| main.rs:712:1:764:1 | mod associated_types |
3434
| main.rs:770:1:789:1 | mod impl_with_attribute_macro |
3535
| my2/mod.rs:1:1:1:16 | mod nested2 |
36-
| my2/mod.rs:18:1:18:12 | mod my3 |
37-
| my2/mod.rs:20:1:21:10 | mod mymod |
36+
| my2/mod.rs:20:1:20:12 | mod my3 |
37+
| my2/mod.rs:22:1:23:10 | mod mymod |
3838
| my2/nested2.rs:1:1:11:1 | mod nested3 |
3939
| my2/nested2.rs:2:5:10:5 | mod nested4 |
4040
| my2/nested2.rs:13:1:19:1 | mod nested5 |
@@ -406,7 +406,7 @@ resolvePath
406406
| main.rs:814:5:814:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
407407
| main.rs:815:5:815:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
408408
| main.rs:815:5:815:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
409-
| main.rs:816:5:816:7 | my3 | my2/mod.rs:18:1:18:12 | mod my3 |
409+
| main.rs:816:5:816:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 |
410410
| main.rs:816:5:816:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
411411
| main.rs:817:5:817:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
412412
| main.rs:818:5:818:7 | m18 | main.rs:553:1:571:1 | mod m18 |
@@ -440,17 +440,21 @@ resolvePath
440440
| my2/mod.rs:16:5:16:20 | ...::nested5 | my2/nested2.rs:13:1:19:1 | mod nested5 |
441441
| my2/mod.rs:16:5:16:29 | ...::nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
442442
| my2/mod.rs:16:5:16:32 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
443-
| my2/mod.rs:23:9:23:13 | mymod | my2/mod.rs:20:1:21:10 | mod mymod |
444-
| my2/mod.rs:23:9:23:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f |
443+
| my2/mod.rs:18:5:18:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) |
444+
| my2/mod.rs:18:5:18:12 | ...::ops | {EXTERNAL LOCATION} | mod ops |
445+
| my2/mod.rs:18:5:18:19 | ...::Deref | {EXTERNAL LOCATION} | trait Deref |
446+
| my2/mod.rs:25:9:25:13 | mymod | my2/mod.rs:22:1:23:10 | mod mymod |
447+
| my2/mod.rs:25:9:25:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f |
445448
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
446449
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h |
447-
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:23:34 | SourceFile |
450+
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
448451
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:826:2 | SourceFile |
449452
| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:56:1:75:1 | fn h |
450-
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:23:34 | SourceFile |
453+
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
451454
| my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |
452-
| my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:23:34 | SourceFile |
455+
| my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
453456
| my2/my3/mod.rs:10:5:10:20 | ...::nested6_f | my2/nested2.rs:15:9:17:9 | fn f |
457+
| my2/my3/mod.rs:12:5:12:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
454458
| my.rs:3:5:3:10 | nested | my.rs:1:1:1:15 | mod nested |
455459
| my.rs:3:5:3:13 | ...::g | my/nested.rs:19:1:22:1 | fn g |
456460
| my.rs:11:5:11:5 | g | my/nested.rs:19:1:22:1 | fn g |

0 commit comments

Comments
 (0)