move enum-variants to presentation

This commit is contained in:
Aleksey Kladov 2019-02-24 20:56:19 +03:00
parent 9af525dbd6
commit 5887c0e574
2 changed files with 21 additions and 21 deletions

View file

@ -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<String> {