Skip to content

Commit 7c2bafe

Browse files
committed
Rust: Handle self in use statements
1 parent 8f8f6f7 commit 7c2bafe

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed

rust/ql/lib/codeql/rust/internal/PathResolution.qll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@ abstract class ItemNode extends Locatable {
177177
else result = this.getImmediateParentModule().getImmediateParentModule()
178178
or
179179
name = "self" and
180-
not this instanceof Module and
181-
result = this.getImmediateParentModule()
180+
if this instanceof Module then result = this else result = this.getImmediateParentModule()
182181
or
183182
name = "Self" and
184183
this = result.(ImplOrTraitItemNode).getAnItemInSelfScope()

rust/ql/test/library-tests/path-resolution/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,5 +496,5 @@ fn main() {
496496
m16::f(); // $ item=I83
497497
m17::f(); // $ item=I99
498498
nested6::f(); // $ item=I116
499-
nested8::f(); // $ MISSING: item=I119
499+
nested8::f(); // $ item=I119
500500
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,8 @@ resolvePath
255255
| main.rs:497:5:497:10 | ...::f | main.rs:468:5:473:5 | fn f |
256256
| main.rs:498:5:498:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
257257
| main.rs:498:5:498:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
258+
| main.rs:499:5:499:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
259+
| main.rs:499:5:499:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
258260
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
259261
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
260262
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -264,6 +266,7 @@ resolvePath
264266
| my2/mod.rs:10:9:10:15 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
265267
| my2/mod.rs:10:9:10:24 | ...::nested7 | my2/nested2.rs:21:1:27:1 | mod nested7 |
266268
| my2/mod.rs:10:9:10:33 | ...::nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
269+
| my2/mod.rs:10:37:10:40 | self | my2/nested2.rs:22:5:26:5 | mod nested8 |
267270
| my.rs:3:5:3:10 | nested | my.rs:1:1:1:15 | mod nested |
268271
| my.rs:3:5:3:13 | ...::g | my/nested.rs:19:1:22:1 | fn g |
269272
| my.rs:11:5:11:5 | g | my/nested.rs:19:1:22:1 | fn g |

0 commit comments

Comments
 (0)