Merge pull request #20120 from Hmikihiro/match_bind_not_type

fix: resolve item in match bind
This commit is contained in:
Chayim Refael Friedman 2025-07-03 15:27:07 +00:00 committed by GitHub
commit 59e25a03a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 74 additions and 1 deletions

View file

@ -765,7 +765,8 @@ impl<'db> SourceAnalyzer<'db> {
},
};
let res = resolve_hir_path(db, &self.resolver, path, HygieneId::ROOT, Some(store))?;
let body_owner = self.resolver.body_owner();
let res = resolve_hir_value_path(db, &self.resolver, body_owner, path, HygieneId::ROOT)?;
match res {
PathResolution::Def(def) => Some(def),
_ => None,

View file

@ -3848,6 +3848,78 @@ fn main() {
_ => {},
}
}
"#,
);
}
#[test]
fn goto_const_from_match_pat_with_tuple_struct() {
check(
r#"
struct Tag(u8);
struct Path {}
const Path: u8 = 0;
// ^^^^
fn main() {
match Tag(Path) {
Tag(Path$0) => {}
_ => {}
}
}
"#,
);
}
#[test]
fn goto_const_from_match_pat() {
check(
r#"
type T1 = u8;
const T1: u8 = 0;
// ^^
fn main() {
let x = 0;
match x {
T1$0 => {}
_ => {}
}
}
"#,
);
}
#[test]
fn goto_struct_from_match_pat() {
check(
r#"
struct T1;
// ^^
fn main() {
let x = 0;
match x {
T1$0 => {}
_ => {}
}
}
"#,
);
}
#[test]
fn no_goto_trait_from_match_pat() {
check(
r#"
trait T1 {}
fn main() {
let x = 0;
match x {
T1$0 => {}
// ^^
_ => {}
}
}
"#,
);
}