1 //! Renderer for type aliases.
3 use hir
::{AsAssocItem, HirDisplay}
;
4 use ide_db
::SymbolKind
;
7 use crate::{item::CompletionItem, render::RenderContext}
;
9 pub(crate) fn render_type_alias(
10 ctx
: RenderContext
<'_
>,
11 type_alias
: hir
::TypeAlias
,
12 ) -> Option
<CompletionItem
> {
13 let _p
= profile
::span("render_type_alias");
14 render(ctx
, type_alias
, false)
17 pub(crate) fn render_type_alias_with_eq(
18 ctx
: RenderContext
<'_
>,
19 type_alias
: hir
::TypeAlias
,
20 ) -> Option
<CompletionItem
> {
21 let _p
= profile
::span("render_type_alias_with_eq");
22 render(ctx
, type_alias
, true)
26 ctx
: RenderContext
<'_
>,
27 type_alias
: hir
::TypeAlias
,
29 ) -> Option
<CompletionItem
> {
32 let name
= type_alias
.name(db
);
33 let (name
, escaped_name
) = if with_eq
{
35 SmolStr
::from_iter([&name
.unescaped().to_smol_str(), " = "]),
36 SmolStr
::from_iter([&name
.to_smol_str(), " = "]),
39 (name
.unescaped().to_smol_str(), name
.to_smol_str())
41 let detail
= type_alias
.display(db
).to_string();
43 let mut item
= CompletionItem
::new(SymbolKind
::TypeAlias
, ctx
.source_range(), name
.clone());
44 item
.set_documentation(ctx
.docs(type_alias
))
45 .set_deprecated(ctx
.is_deprecated(type_alias
) || ctx
.is_deprecated_assoc_item(type_alias
))
47 .set_relevance(ctx
.completion_relevance());
49 if let Some(actm
) = type_alias
.as_assoc_item(db
) {
50 if let Some(trt
) = actm
.containing_trait_or_trait_impl(db
) {
51 item
.trait_name(trt
.name(db
).to_smol_str());
54 item
.insert_text(escaped_name
);