From 943e4faceb4491b83cf05cfceedbdd5f469b9270 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sun, 20 Dec 2020 11:36:33 +0100 Subject: Show enum variant on Self qualified paths --- .../completion/src/completions/qualified_path.rs | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'crates/completion/src') diff --git a/crates/completion/src/completions/qualified_path.rs b/crates/completion/src/completions/qualified_path.rs index 1300f00b2..882c4dcbc 100644 --- a/crates/completion/src/completions/qualified_path.rs +++ b/crates/completion/src/completions/qualified_path.rs @@ -118,6 +118,12 @@ pub(crate) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionCon _ => return, }; + if let Some(Adt::Enum(e)) = ty.as_adt() { + for variant in e.variants(ctx.db) { + acc.add_enum_variant(ctx, variant, None); + } + } + let traits_in_scope = ctx.scope.traits_in_scope(); let mut seen = FxHashSet::default(); ty.iterate_path_candidates(ctx.db, krate, &traits_in_scope, None, |_ty, item| { @@ -752,4 +758,27 @@ fn main() { "#]], ); } + + #[test] + fn completes_self_enum() { + check( + r#" +enum Foo { + Bar, + Baz, +} + +impl Foo { + fn foo(self) { + Self::<|> + } +} +"#, + expect![[r#" + ev Bar () + ev Baz () + me foo(…) fn foo(self) + "#]], + ); + } } -- cgit v1.2.3