Unnamed repository; edit this file 'description' to name the repository.
Fix the wrong path resolution
Signed-off-by: hi-rustin <[email protected]>
hi-rustin 2022-03-17
parent a9aae25 · commit c6ef4e8
-rw-r--r--crates/ide_completion/src/completions/pattern.rs7
-rw-r--r--crates/ide_completion/src/tests/pattern.rs4
2 files changed, 9 insertions, 2 deletions
diff --git a/crates/ide_completion/src/completions/pattern.rs b/crates/ide_completion/src/completions/pattern.rs
index 7926db8acf..4b5849dab5 100644
--- a/crates/ide_completion/src/completions/pattern.rs
+++ b/crates/ide_completion/src/completions/pattern.rs
@@ -143,10 +143,15 @@ fn pattern_path_completion(
.into_iter()
.for_each(|variant| acc.add_enum_variant(ctx, variant, None));
}
- res @ (hir::PathResolution::TypeParam(_) | hir::PathResolution::SelfType(_)) => {
+ res @ (hir::PathResolution::TypeParam(_)
+ | hir::PathResolution::SelfType(_)
+ | hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Struct(_)))) => {
let ty = match res {
hir::PathResolution::TypeParam(param) => param.ty(ctx.db),
hir::PathResolution::SelfType(impl_def) => impl_def.self_ty(ctx.db),
+ hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Struct(s))) => {
+ s.ty(ctx.db)
+ }
_ => return,
};
diff --git a/crates/ide_completion/src/tests/pattern.rs b/crates/ide_completion/src/tests/pattern.rs
index c1c73aaf61..1dcb0a5531 100644
--- a/crates/ide_completion/src/tests/pattern.rs
+++ b/crates/ide_completion/src/tests/pattern.rs
@@ -463,6 +463,8 @@ fn f(t: Ty) {
}
}
"#,
- expect![[""]],
+ expect![[r#"
+ ct ABC const ABC: Self
+ "#]],
)
}