]> git.lizzy.rs Git - rust.git/commitdiff
Show enum variant on Self qualified paths
authorLukas Wirth <lukastw97@gmail.com>
Sun, 20 Dec 2020 10:36:33 +0000 (11:36 +0100)
committerLukas Wirth <lukastw97@gmail.com>
Sun, 20 Dec 2020 11:31:59 +0000 (12:31 +0100)
crates/completion/src/completions/qualified_path.rs

index 1300f00b2f22c59d63ccf605a7d7cfc7a2b81ae0..882c4dcbce954327668f626f4f566f97ea7a1db3 100644 (file)
@@ -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 foo(…) fn foo(a: i32, b: i32)
             "#]],
         );
     }
+
+    #[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)
+            "#]],
+        );
+    }
 }