diff options
author | Lukas Wirth <[email protected]> | 2021-01-20 17:38:12 +0000 |
---|---|---|
committer | Lukas Wirth <[email protected]> | 2021-01-20 17:39:46 +0000 |
commit | f2cb7dbcb71d81336c95dc7ae1301ba2a79ef707 (patch) | |
tree | c17a9cf589910137b5388fc22856c991a5ec0a31 /crates/completion/src/render.rs | |
parent | 563a175fdb9073a548fc2e161d5de0a093b0d74d (diff) |
Partially unify SymbolKind and CompletionItemKind
Diffstat (limited to 'crates/completion/src/render.rs')
-rw-r--r-- | crates/completion/src/render.rs | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/crates/completion/src/render.rs b/crates/completion/src/render.rs index 68556c8ce..8f66f6e59 100644 --- a/crates/completion/src/render.rs +++ b/crates/completion/src/render.rs | |||
@@ -13,7 +13,7 @@ mod builder_ext; | |||
13 | use hir::{ | 13 | use hir::{ |
14 | AsAssocItem, Documentation, HasAttrs, HirDisplay, ModuleDef, Mutability, ScopeDef, Type, | 14 | AsAssocItem, Documentation, HasAttrs, HirDisplay, ModuleDef, Mutability, ScopeDef, Type, |
15 | }; | 15 | }; |
16 | use ide_db::{helpers::SnippetCap, RootDatabase}; | 16 | use ide_db::{helpers::SnippetCap, RootDatabase, SymbolKind}; |
17 | use syntax::TextRange; | 17 | use syntax::TextRange; |
18 | use test_utils::mark; | 18 | use test_utils::mark; |
19 | 19 | ||
@@ -146,7 +146,7 @@ impl<'a> Render<'a> { | |||
146 | self.ctx.source_range(), | 146 | self.ctx.source_range(), |
147 | name.to_string(), | 147 | name.to_string(), |
148 | ) | 148 | ) |
149 | .kind(CompletionItemKind::Field) | 149 | .kind(SymbolKind::Field) |
150 | .detail(ty.display(self.ctx.db()).to_string()) | 150 | .detail(ty.display(self.ctx.db()).to_string()) |
151 | .set_documentation(field.docs(self.ctx.db())) | 151 | .set_documentation(field.docs(self.ctx.db())) |
152 | .set_deprecated(is_deprecated); | 152 | .set_deprecated(is_deprecated); |
@@ -160,7 +160,7 @@ impl<'a> Render<'a> { | |||
160 | 160 | ||
161 | fn add_tuple_field(&mut self, field: usize, ty: &Type) -> CompletionItem { | 161 | fn add_tuple_field(&mut self, field: usize, ty: &Type) -> CompletionItem { |
162 | CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), field.to_string()) | 162 | CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), field.to_string()) |
163 | .kind(CompletionItemKind::Field) | 163 | .kind(SymbolKind::Field) |
164 | .detail(ty.display(self.ctx.db()).to_string()) | 164 | .detail(ty.display(self.ctx.db()).to_string()) |
165 | .build() | 165 | .build() |
166 | } | 166 | } |
@@ -187,7 +187,7 @@ impl<'a> Render<'a> { | |||
187 | if self.ctx.completion.is_pat_binding_or_const | 187 | if self.ctx.completion.is_pat_binding_or_const |
188 | | self.ctx.completion.is_irrefutable_pat_binding => | 188 | | self.ctx.completion.is_irrefutable_pat_binding => |
189 | { | 189 | { |
190 | CompletionItemKind::EnumVariant | 190 | CompletionItemKind::SymbolKind(SymbolKind::Variant) |
191 | } | 191 | } |
192 | ScopeDef::ModuleDef(Variant(var)) => { | 192 | ScopeDef::ModuleDef(Variant(var)) => { |
193 | let item = render_variant(self.ctx, import_to_add, Some(local_name), *var, None); | 193 | let item = render_variant(self.ctx, import_to_add, Some(local_name), *var, None); |
@@ -198,24 +198,29 @@ impl<'a> Render<'a> { | |||
198 | return item; | 198 | return item; |
199 | } | 199 | } |
200 | 200 | ||
201 | ScopeDef::ModuleDef(Module(..)) => CompletionItemKind::Module, | 201 | ScopeDef::ModuleDef(Module(..)) => CompletionItemKind::SymbolKind(SymbolKind::Module), |
202 | ScopeDef::ModuleDef(Adt(hir::Adt::Struct(_))) => CompletionItemKind::Struct, | 202 | ScopeDef::ModuleDef(Adt(adt)) => CompletionItemKind::SymbolKind(match adt { |
203 | // FIXME: add CompletionItemKind::Union | 203 | hir::Adt::Struct(_) => SymbolKind::Struct, |
204 | ScopeDef::ModuleDef(Adt(hir::Adt::Union(_))) => CompletionItemKind::Struct, | 204 | // FIXME: add CompletionItemKind::Union |
205 | ScopeDef::ModuleDef(Adt(hir::Adt::Enum(_))) => CompletionItemKind::Enum, | 205 | hir::Adt::Union(_) => SymbolKind::Struct, |
206 | ScopeDef::ModuleDef(Const(..)) => CompletionItemKind::Const, | 206 | hir::Adt::Enum(_) => SymbolKind::Enum, |
207 | ScopeDef::ModuleDef(Static(..)) => CompletionItemKind::Static, | 207 | }), |
208 | ScopeDef::ModuleDef(Trait(..)) => CompletionItemKind::Trait, | 208 | ScopeDef::ModuleDef(Const(..)) => CompletionItemKind::SymbolKind(SymbolKind::Const), |
209 | ScopeDef::ModuleDef(TypeAlias(..)) => CompletionItemKind::TypeAlias, | 209 | ScopeDef::ModuleDef(Static(..)) => CompletionItemKind::SymbolKind(SymbolKind::Static), |
210 | ScopeDef::ModuleDef(Trait(..)) => CompletionItemKind::SymbolKind(SymbolKind::Trait), | ||
211 | ScopeDef::ModuleDef(TypeAlias(..)) => { | ||
212 | CompletionItemKind::SymbolKind(SymbolKind::TypeAlias) | ||
213 | } | ||
210 | ScopeDef::ModuleDef(BuiltinType(..)) => CompletionItemKind::BuiltinType, | 214 | ScopeDef::ModuleDef(BuiltinType(..)) => CompletionItemKind::BuiltinType, |
211 | ScopeDef::GenericParam(param) => match param { | 215 | ScopeDef::GenericParam(param) => CompletionItemKind::SymbolKind(match param { |
212 | hir::GenericParam::TypeParam(_) => CompletionItemKind::TypeParam, | 216 | hir::GenericParam::TypeParam(_) => SymbolKind::TypeParam, |
213 | hir::GenericParam::LifetimeParam(_) => CompletionItemKind::LifetimeParam, | 217 | hir::GenericParam::LifetimeParam(_) => SymbolKind::LifetimeParam, |
214 | hir::GenericParam::ConstParam(_) => CompletionItemKind::ConstParam, | 218 | hir::GenericParam::ConstParam(_) => SymbolKind::ConstParam, |
215 | }, | 219 | }), |
216 | ScopeDef::Local(..) => CompletionItemKind::Binding, | 220 | ScopeDef::Local(..) => CompletionItemKind::SymbolKind(SymbolKind::Local), |
217 | // (does this need its own kind?) | 221 | ScopeDef::AdtSelfType(..) | ScopeDef::ImplSelfType(..) => { |
218 | ScopeDef::AdtSelfType(..) | ScopeDef::ImplSelfType(..) => CompletionItemKind::TypeParam, | 222 | CompletionItemKind::SymbolKind(SymbolKind::SelfParam) |
223 | } | ||
219 | ScopeDef::Unknown => { | 224 | ScopeDef::Unknown => { |
220 | let item = CompletionItem::new( | 225 | let item = CompletionItem::new( |
221 | CompletionKind::Reference, | 226 | CompletionKind::Reference, |