Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/render/struct_literal.rs')
-rw-r--r--crates/ide_completion/src/render/struct_literal.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/crates/ide_completion/src/render/struct_literal.rs b/crates/ide_completion/src/render/struct_literal.rs
index 4eb4f6b9f1..a70015dcaf 100644
--- a/crates/ide_completion/src/render/struct_literal.rs
+++ b/crates/ide_completion/src/render/struct_literal.rs
@@ -3,6 +3,7 @@
use hir::{db::HirDatabase, HasAttrs, HasVisibility, Name, StructKind};
use ide_db::helpers::SnippetCap;
use itertools::Itertools;
+use syntax::SmolStr;
use crate::{render::RenderContext, CompletionItem, CompletionItemKind};
@@ -21,7 +22,7 @@ pub(crate) fn render_struct_literal(
return None;
}
- let name = local_name.unwrap_or_else(|| strukt.name(ctx.db())).to_string();
+ let name = local_name.unwrap_or_else(|| strukt.name(ctx.db())).to_smol_str();
let literal = render_literal(&ctx, &name, strukt.kind(ctx.db()), &visible_fields)?;
Some(build_completion(ctx, name, literal, strukt))
@@ -29,12 +30,15 @@ pub(crate) fn render_struct_literal(
fn build_completion(
ctx: RenderContext<'_>,
- name: String,
+ name: SmolStr,
literal: String,
def: impl HasAttrs + Copy,
) -> CompletionItem {
- let mut item =
- CompletionItem::new(CompletionItemKind::Snippet, ctx.source_range(), name + " {…}");
+ let mut item = CompletionItem::new(
+ CompletionItemKind::Snippet,
+ ctx.source_range(),
+ SmolStr::from_iter([&name, " {…}"]),
+ );
item.set_documentation(ctx.docs(def)).set_deprecated(ctx.is_deprecated(def)).detail(&literal);
match ctx.snippet_cap() {
Some(snippet_cap) => item.insert_snippet(snippet_cap, literal),