1 use crate::completion::{CompletionContext, Completions};
3 /// Completes constats and paths in patterns.
4 pub(super) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) {
5 if !ctx.is_pat_binding {
8 // TODO: ideally, we should look at the type we are matching against and
9 // suggest variants + auto-imports
10 let names = ctx.resolver.all_names(ctx.db);
11 for (name, res) in names.into_iter() {
13 let def = match r.take_types().or(r.take_values()) {
14 Some(hir::Resolution::Def(def)) => def,
18 hir::ModuleDef::Enum(..)
19 | hir::ModuleDef::EnumVariant(..)
20 | hir::ModuleDef::Const(..)
21 | hir::ModuleDef::Module(..) => (),
24 acc.add_resolution(ctx, name.to_string(), &res)
30 use insta::assert_debug_snapshot_matches;
31 use crate::completion::{CompletionItem, CompletionKind, do_completion};
33 fn complete(code: &str) -> Vec<CompletionItem> {
34 do_completion(code, CompletionKind::Reference)
38 fn completes_enum_variants_and_modules() {
39 let completions = complete(
56 assert_debug_snapshot_matches!(completions, @r###"[
59 source_range: [246; 246),
66 source_range: [246; 246),
73 source_range: [246; 246),
80 source_range: [246; 246),