Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/pattern.rs')
-rw-r--r--crates/ide-completion/src/completions/pattern.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions/pattern.rs b/crates/ide-completion/src/completions/pattern.rs
index 815ce5145d..eeb2c65e48 100644
--- a/crates/ide-completion/src/completions/pattern.rs
+++ b/crates/ide-completion/src/completions/pattern.rs
@@ -42,6 +42,11 @@ pub(crate) fn complete_pattern(
}
}
+ if pattern_ctx.after_if_expr {
+ add_keyword("else", "else {\n $0\n}");
+ add_keyword("else if", "else if $1 {\n $0\n}");
+ }
+
if pattern_ctx.record_pat.is_some() {
return;
}
@@ -70,7 +75,7 @@ pub(crate) fn complete_pattern(
acc,
ctx,
e,
- &pattern_ctx.impl_,
+ pattern_ctx.impl_or_trait.as_ref().and_then(|it| it.as_ref().left()),
|acc, ctx, variant, path| {
acc.add_qualified_variant_pat(ctx, pattern_ctx, variant, path);
},
@@ -96,6 +101,7 @@ pub(crate) fn complete_pattern(
hir::ModuleDef::Const(..) => refutable,
hir::ModuleDef::Module(..) => true,
hir::ModuleDef::Macro(mac) => mac.is_fn_like(ctx.db),
+ hir::ModuleDef::TypeAlias(_) => true,
_ => false,
},
hir::ScopeDef::ImplSelfType(impl_) => match impl_.self_ty(ctx.db).as_adt() {