Rust: Resolve Self path in trait type of implementation

This commit is contained in:
Simon Friis Vindum
2025-04-07 11:47:48 +02:00
parent 5c2d6e3d0f
commit 6cecf7e618
3 changed files with 4 additions and 1 deletions

View File

@@ -373,6 +373,8 @@ abstract class ImplOrTraitItemNode extends ItemNode {
/** Gets an item that may refer to this node using `Self`. */
pragma[nomagic]
ItemNode getAnItemInSelfScope() {
result = this
or
result.getImmediateParent() = this
or
exists(ItemNode mid |

View File

@@ -532,7 +532,7 @@ mod m23 {
#[rustfmt::skip]
impl Trait1<
Self // $ MISSING: item=I4
Self // $ item=I4
> // $ item=I2
for S { // $ item=I4
fn f(&self) {

View File

@@ -236,6 +236,7 @@ resolvePath
| main.rs:517:21:517:29 | ...::A | main.rs:499:13:499:13 | A |
| main.rs:518:21:518:28 | MyStruct | main.rs:502:9:502:28 | struct MyStruct |
| main.rs:534:10:536:5 | Trait1::<...> | main.rs:524:5:529:5 | trait Trait1 |
| main.rs:535:7:535:10 | Self | main.rs:531:5:531:13 | struct S |
| main.rs:537:11:537:11 | S | main.rs:531:5:531:13 | struct S |
| main.rs:545:17:545:17 | S | main.rs:531:5:531:13 | struct S |
| main.rs:551:5:551:6 | my | main.rs:1:1:1:7 | mod my |