diff --git a/crates/ide-completion/src/completions/pattern.rs b/crates/ide-completion/src/completions/pattern.rs index dcddc24890ac..eeb2c65e4844 100644 --- a/crates/ide-completion/src/completions/pattern.rs +++ b/crates/ide-completion/src/completions/pattern.rs @@ -101,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() { diff --git a/crates/ide-completion/src/tests/pattern.rs b/crates/ide-completion/src/tests/pattern.rs index 6eb0b818d697..380bab915014 100644 --- a/crates/ide-completion/src/tests/pattern.rs +++ b/crates/ide-completion/src/tests/pattern.rs @@ -782,6 +782,37 @@ fn f(x: EnumAlias) { ); } +#[test] +fn through_alias_it_self() { + check( + r#" +enum Enum { + Unit, + Tuple(T), +} + +type EnumAlias = Enum; + +fn f(x: EnumAlias) { + match x { + $0 => (), + _ => (), + } + +} + +"#, + expect![[r#" + en Enum + ta EnumAlias + bn Enum::Tuple(…) Enum::Tuple($1)$0 + bn Enum::Unit Enum::Unit$0 + kw mut + kw ref + "#]], + ); +} + #[test] fn pat_no_unstable_item_on_stable() { check(