Skip to content

Commit 1c36485

Browse files
committed
Rust: Fix path resolution for m::{self} paths where m is a trait
1 parent f267992 commit 1c36485

4 files changed

Lines changed: 7 additions & 6 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ abstract class ItemNode extends Locatable {
427427
if
428428
this instanceof Module or
429429
this instanceof Enum or
430-
this instanceof Struct or
430+
this instanceof Trait or
431431
this instanceof Crate
432432
then (
433433
kind.isBoth() and

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ mod self_import_from_struct {
1313

1414
#[rustfmt::skip]
1515
use self::MyStruct::{ // $ item=Struct
16-
self // $ SPURIOUS: item=Struct
16+
self // $ SPURIOUS: item=self_import_from_struct
1717
};
1818
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ mod self_imports {
705705

706706
#[rustfmt::skip]
707707
use super::definitions::MyTrait::{ // $ item=I105
708-
self // $ MISSING: item=I105 SPURIOUS: item=definitions
708+
self // $ item=I105
709709
};
710710

711711
#[rustfmt::skip]
@@ -714,7 +714,7 @@ mod self_imports {
714714
};
715715

716716
#[rustfmt::skip]
717-
fn f<T: MyTrait>() { // $ MISSING: item=I105
717+
fn f<T: MyTrait>() { // $ item=I105
718718
my_module::f(); // $ item=I107
719719
let _ = MyEnum::A; // $ item=I108
720720
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ resolvePath
5757
| invalid/main.rs:6:9:6:9 | A | invalid/main.rs:3:11:4:9 | struct A |
5858
| invalid/main.rs:15:9:15:12 | self | invalid/main.rs:8:1:18:1 | mod self_import_from_struct |
5959
| invalid/main.rs:15:9:15:22 | ...::MyStruct | invalid/main.rs:12:5:12:20 | struct MyStruct |
60-
| invalid/main.rs:16:9:16:12 | self | invalid/main.rs:12:5:12:20 | struct MyStruct |
60+
| invalid/main.rs:16:9:16:12 | self | invalid/main.rs:8:1:18:1 | mod self_import_from_struct |
6161
| main.rs:4:8:4:9 | my | main.rs:1:1:1:7 | mod my |
6262
| main.rs:4:14:4:17 | self | main.rs:1:1:1:7 | mod my |
6363
| main.rs:6:5:6:6 | my | main.rs:1:1:1:7 | mod my |
@@ -397,11 +397,12 @@ resolvePath
397397
| main.rs:707:13:707:17 | super | main.rs:688:1:722:1 | mod self_imports |
398398
| main.rs:707:13:707:30 | ...::definitions | main.rs:690:5:698:5 | mod definitions |
399399
| main.rs:707:13:707:39 | ...::MyTrait | main.rs:693:11:694:28 | trait MyTrait |
400-
| main.rs:708:13:708:16 | self | main.rs:690:5:698:5 | mod definitions |
400+
| main.rs:708:13:708:16 | self | main.rs:693:11:694:28 | trait MyTrait |
401401
| main.rs:712:13:712:17 | super | main.rs:688:1:722:1 | mod self_imports |
402402
| main.rs:712:13:712:30 | ...::definitions | main.rs:690:5:698:5 | mod definitions |
403403
| main.rs:712:13:712:38 | ...::MyEnum | main.rs:694:30:697:9 | enum MyEnum |
404404
| main.rs:713:13:713:16 | self | main.rs:694:30:697:9 | enum MyEnum |
405+
| main.rs:717:17:717:23 | MyTrait | main.rs:693:11:694:28 | trait MyTrait |
405406
| main.rs:718:13:718:21 | my_module | main.rs:691:9:693:9 | mod my_module |
406407
| main.rs:718:13:718:24 | ...::f | main.rs:692:13:692:25 | fn f |
407408
| main.rs:719:21:719:26 | MyEnum | main.rs:694:30:697:9 | enum MyEnum |

0 commit comments

Comments
 (0)