aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/completion/complete_pattern.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-04-03 18:59:28 +0100
committerAleksey Kladov <[email protected]>2020-04-03 20:00:15 +0100
commitadbcedde1812b728726419f24000bf123b22fef9 (patch)
tree1bc2cd72a1fc81f49fef36c408d82ebdb3207969 /crates/ra_ide/src/completion/complete_pattern.rs
parent6a2dd7bafc24ac405aebf29f04120ca071019e92 (diff)
Remove the second code-path for completing names in patterns
Diffstat (limited to 'crates/ra_ide/src/completion/complete_pattern.rs')
-rw-r--r--crates/ra_ide/src/completion/complete_pattern.rs57
1 files changed, 12 insertions, 45 deletions
diff --git a/crates/ra_ide/src/completion/complete_pattern.rs b/crates/ra_ide/src/completion/complete_pattern.rs
index bc8fade6f..1c8b50eec 100644
--- a/crates/ra_ide/src/completion/complete_pattern.rs
+++ b/crates/ra_ide/src/completion/complete_pattern.rs
@@ -4,23 +4,25 @@ use crate::completion::{CompletionContext, Completions};
4 4
5/// Completes constats and paths in patterns. 5/// Completes constats and paths in patterns.
6pub(super) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) { 6pub(super) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) {
7 if !ctx.is_pat_binding { 7 if !ctx.is_pat_binding_or_const {
8 return; 8 return;
9 } 9 }
10 // FIXME: ideally, we should look at the type we are matching against and 10 // FIXME: ideally, we should look at the type we are matching against and
11 // suggest variants + auto-imports 11 // suggest variants + auto-imports
12 ctx.scope().process_all_names(&mut |name, res| { 12 ctx.scope().process_all_names(&mut |name, res| {
13 let def = match &res { 13 match &res {
14 hir::ScopeDef::ModuleDef(def) => def, 14 hir::ScopeDef::ModuleDef(def) => match def {
15 hir::ModuleDef::Adt(hir::Adt::Enum(..))
16 | hir::ModuleDef::Adt(hir::Adt::Struct(..))
17 | hir::ModuleDef::EnumVariant(..)
18 | hir::ModuleDef::Const(..)
19 | hir::ModuleDef::Module(..) => (),
20 _ => return,
21 },
22 hir::ScopeDef::MacroDef(_) => (),
15 _ => return, 23 _ => return,
16 }; 24 };
17 match def { 25
18 hir::ModuleDef::Adt(hir::Adt::Enum(..))
19 | hir::ModuleDef::EnumVariant(..)
20 | hir::ModuleDef::Const(..)
21 | hir::ModuleDef::Module(..) => (),
22 _ => return,
23 }
24 acc.add_resolution(ctx, name.to_string(), &res) 26 acc.add_resolution(ctx, name.to_string(), &res)
25 }); 27 });
26} 28}
@@ -70,13 +72,6 @@ mod tests {
70 kind: Enum, 72 kind: Enum,
71 }, 73 },
72 CompletionItem { 74 CompletionItem {
73 label: "E",
74 source_range: [246; 246),
75 delete: [246; 246),
76 insert: "E",
77 kind: Enum,
78 },
79 CompletionItem {
80 label: "X", 75 label: "X",
81 source_range: [246; 246), 76 source_range: [246; 246),
82 delete: [246; 246), 77 delete: [246; 246),
@@ -84,20 +79,6 @@ mod tests {
84 kind: EnumVariant, 79 kind: EnumVariant,
85 }, 80 },
86 CompletionItem { 81 CompletionItem {
87 label: "X",
88 source_range: [246; 246),
89 delete: [246; 246),
90 insert: "X",
91 kind: EnumVariant,
92 },
93 CompletionItem {
94 label: "Z",
95 source_range: [246; 246),
96 delete: [246; 246),
97 insert: "Z",
98 kind: Const,
99 },
100 CompletionItem {
101 label: "Z", 82 label: "Z",
102 source_range: [246; 246), 83 source_range: [246; 246),
103 delete: [246; 246), 84 delete: [246; 246),
@@ -111,13 +92,6 @@ mod tests {
111 insert: "m", 92 insert: "m",
112 kind: Module, 93 kind: Module,
113 }, 94 },
114 CompletionItem {
115 label: "m",
116 source_range: [246; 246),
117 delete: [246; 246),
118 insert: "m",
119 kind: Module,
120 },
121 ] 95 ]
122 "###); 96 "###);
123 } 97 }
@@ -146,13 +120,6 @@ mod tests {
146 kind: Enum, 120 kind: Enum,
147 }, 121 },
148 CompletionItem { 122 CompletionItem {
149 label: "E",
150 source_range: [151; 151),
151 delete: [151; 151),
152 insert: "E",
153 kind: Enum,
154 },
155 CompletionItem {
156 label: "m!", 123 label: "m!",
157 source_range: [151; 151), 124 source_range: [151; 151),
158 delete: [151; 151), 125 delete: [151; 151),