aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-10-08 18:32:19 +0100
committerAleksey Kladov <[email protected]>2019-10-08 18:32:19 +0100
commit2f85a640a2698fbd31155172218a91d2e986fd47 (patch)
tree606d0e413b7abfb303af6707a965566c4442dc19 /crates/ra_ide_api/src/completion
parent06a8deae4a29949f438d66c54eed4e016ac35432 (diff)
refactor
Diffstat (limited to 'crates/ra_ide_api/src/completion')
-rw-r--r--crates/ra_ide_api/src/completion/presentation.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs
index eb480a775..9946db4ca 100644
--- a/crates/ra_ide_api/src/completion/presentation.rs
+++ b/crates/ra_ide_api/src/completion/presentation.rs
@@ -50,14 +50,8 @@ impl Completions {
50 ScopeDef::ModuleDef(Function(func)) => { 50 ScopeDef::ModuleDef(Function(func)) => {
51 return self.add_function_with_name(ctx, Some(local_name), *func); 51 return self.add_function_with_name(ctx, Some(local_name), *func);
52 } 52 }
53 ScopeDef::ModuleDef(Adt(hir::Adt::Struct(it))) => { 53 ScopeDef::ModuleDef(Adt(adt)) => {
54 (CompletionItemKind::Struct, it.docs(ctx.db)) 54 return self.add_adt_with_name(ctx, local_name, *adt);
55 }
56 ScopeDef::ModuleDef(Adt(hir::Adt::Union(it))) => {
57 (CompletionItemKind::Struct, it.docs(ctx.db))
58 }
59 ScopeDef::ModuleDef(Adt(hir::Adt::Enum(it))) => {
60 (CompletionItemKind::Enum, it.docs(ctx.db))
61 } 55 }
62 ScopeDef::ModuleDef(EnumVariant(it)) => { 56 ScopeDef::ModuleDef(EnumVariant(it)) => {
63 (CompletionItemKind::EnumVariant, it.docs(ctx.db)) 57 (CompletionItemKind::EnumVariant, it.docs(ctx.db))
@@ -173,6 +167,19 @@ impl Completions {
173 self.add(builder) 167 self.add(builder)
174 } 168 }
175 169
170 fn add_adt_with_name(&mut self, ctx: &CompletionContext, name: String, adt: hir::Adt) {
171 let builder = CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name);
172
173 let (kind, docs) = match adt {
174 hir::Adt::Struct(it) => (CompletionItemKind::Struct, it.docs(ctx.db)),
175 // FIXME: add CompletionItemKind::Union
176 hir::Adt::Union(it) => (CompletionItemKind::Struct, it.docs(ctx.db)),
177 hir::Adt::Enum(it) => (CompletionItemKind::Enum, it.docs(ctx.db)),
178 };
179
180 builder.kind(kind).set_documentation(docs).add_to(self)
181 }
182
176 pub(crate) fn add_const(&mut self, ctx: &CompletionContext, constant: hir::Const) { 183 pub(crate) fn add_const(&mut self, ctx: &CompletionContext, constant: hir::Const) {
177 let ast_node = constant.source(ctx.db).ast; 184 let ast_node = constant.source(ctx.db).ast;
178 let name = match ast_node.name() { 185 let name = match ast_node.name() {