From 5887c0e574064934f2b090746a89894efc6c8f8f Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 24 Feb 2019 20:56:19 +0300 Subject: move enum-variants to presentation --- crates/ra_ide_api/src/completion/complete_path.rs | 26 +++++------------------ crates/ra_ide_api/src/completion/presentation.rs | 16 ++++++++++++++ 2 files changed, 21 insertions(+), 21 deletions(-) (limited to 'crates') diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index d2f65310f..74ea8d600 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs @@ -1,9 +1,8 @@ -use join_to_string::join; -use hir::{Docs, Resolution}; +use hir::{Resolution}; use ra_syntax::{AstNode, ast::NameOwner}; use test_utils::tested_by; -use crate::completion::{CompletionItem, CompletionItemKind, Completions, CompletionKind, CompletionContext}; +use crate::completion::{CompletionItem, Completions, CompletionKind, CompletionContext}; pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { let path = match &ctx.path_prefix { @@ -39,24 +38,9 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { } } hir::ModuleDef::Enum(e) => { - e.variants(ctx.db).into_iter().for_each(|variant| { - if let Some(name) = variant.name(ctx.db) { - let detail_types = - variant.fields(ctx.db).into_iter().map(|field| field.ty(ctx.db)); - let detail = - join(detail_types).separator(", ").surround_with("(", ")").to_string(); - - CompletionItem::new( - CompletionKind::Reference, - ctx.source_range(), - name.to_string(), - ) - .kind(CompletionItemKind::EnumVariant) - .set_documentation(variant.docs(ctx.db)) - .set_detail(Some(detail)) - .add_to(acc) - } - }); + for variant in e.variants(ctx.db) { + acc.add_enum_variant(ctx, variant); + } } hir::ModuleDef::Struct(s) => { let ty = s.ty(ctx.db); diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs index 514f3b539..bc2cb4a0f 100644 --- a/crates/ra_ide_api/src/completion/presentation.rs +++ b/crates/ra_ide_api/src/completion/presentation.rs @@ -1,4 +1,5 @@ //! This modules takes care of rendering various defenitions as completion items. +use join_to_string::join; use test_utils::tested_by; use hir::Docs; @@ -60,6 +61,21 @@ impl Completions { } self.add(builder) } + + pub(crate) fn add_enum_variant(&mut self, ctx: &CompletionContext, variant: hir::EnumVariant) { + let name = match variant.name(ctx.db) { + Some(it) => it, + None => return, + }; + let detail_types = variant.fields(ctx.db).into_iter().map(|field| field.ty(ctx.db)); + let detail = join(detail_types).separator(", ").surround_with("(", ")").to_string(); + + CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name.to_string()) + .kind(CompletionItemKind::EnumVariant) + .set_documentation(variant.docs(ctx.db)) + .detail(detail) + .add_to(self); + } } fn function_item_label(ctx: &CompletionContext, function: hir::Function) -> Option { -- cgit v1.2.3