Unnamed repository; edit this file 'description' to name the repository.
internal: remove redundant str::to_owned in postfix
A4-Tacks 4 weeks ago
parent 4171602 · commit f2cb72f
-rw-r--r--crates/ide-completion/src/completions/postfix.rs89
-rw-r--r--crates/ide-completion/src/completions/postfix/format_like.rs2
2 files changed, 45 insertions, 46 deletions
diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs
index ee529d8888..0a2e15edae 100644
--- a/crates/ide-completion/src/completions/postfix.rs
+++ b/crates/ide-completion/src/completions/postfix.rs
@@ -84,15 +84,15 @@ pub(crate) fn complete_postfix(
let mut item = postfix_snippet(
"drop",
"fn drop(&mut self)",
- &format!("{path}($0{receiver_text})", path = path.display(ctx.db, ctx.edition)),
+ format!("{path}($0{receiver_text})", path = path.display(ctx.db, ctx.edition)),
);
item.set_documentation(drop_fn.docs(ctx.db));
item.add_to(acc, ctx.db);
}
- postfix_snippet("ref", "&expr", &format!("&{receiver_text}")).add_to(acc, ctx.db);
- postfix_snippet("refm", "&mut expr", &format!("&mut {receiver_text}")).add_to(acc, ctx.db);
- postfix_snippet("deref", "*expr", &format!("*{receiver_text}")).add_to(acc, ctx.db);
+ postfix_snippet("ref", "&expr", format!("&{receiver_text}")).add_to(acc, ctx.db);
+ postfix_snippet("refm", "&mut expr", format!("&mut {receiver_text}")).add_to(acc, ctx.db);
+ postfix_snippet("deref", "*expr", format!("*{receiver_text}")).add_to(acc, ctx.db);
// The rest of the postfix completions create an expression that moves an argument,
// so it's better to consider references now to avoid breaking the compilation
@@ -110,11 +110,11 @@ pub(crate) fn complete_postfix(
add_custom_postfix_completions(acc, ctx, &postfix_snippet, &receiver_text);
}
- postfix_snippet("box", "Box::new(expr)", &format!("Box::new({receiver_text})"))
+ postfix_snippet("box", "Box::new(expr)", format!("Box::new({receiver_text})"))
.add_to(acc, ctx.db);
- postfix_snippet("dbg", "dbg!(expr)", &format!("dbg!({receiver_text})")).add_to(acc, ctx.db); // fixme
- postfix_snippet("dbgr", "dbg!(&expr)", &format!("dbg!(&{receiver_text})")).add_to(acc, ctx.db);
- postfix_snippet("call", "function(expr)", &format!("${{1}}({receiver_text})"))
+ postfix_snippet("dbg", "dbg!(expr)", format!("dbg!({receiver_text})")).add_to(acc, ctx.db); // fixme
+ postfix_snippet("dbgr", "dbg!(&expr)", format!("dbg!(&{receiver_text})")).add_to(acc, ctx.db);
+ postfix_snippet("call", "function(expr)", format!("${{1}}({receiver_text})"))
.add_to(acc, ctx.db);
if let Some(expected_ty) = ctx.expected_type.as_ref() {
@@ -134,12 +134,12 @@ pub(crate) fn complete_postfix(
.is_some();
if is_valid_new {
- let ty_name = expected_ty.display(ctx.db, ctx.display_target).to_string();
+ let ty_name = expected_ty.display(ctx.db, ctx.display_target).to_smolstr();
postfix_snippet(
"new",
- &format!("{}::new(expr)", ty_name),
- &format!("{}::new({}$0)", ty_name, receiver_text),
+ &format_smolstr!("{}::new(expr)", ty_name),
+ format!("{}::new({}$0)", ty_name, receiver_text),
)
.add_to(acc, ctx.db);
}
@@ -155,13 +155,13 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"let",
"let Ok(_)",
- &format!("let Ok({placeholder}) = {receiver_text}"),
+ format!("let Ok({placeholder}) = {receiver_text}"),
)
.add_to(acc, ctx.db);
postfix_snippet(
"letm",
"let Ok(mut _)",
- &format!("let Ok(mut {placeholder}) = {receiver_text}"),
+ format!("let Ok(mut {placeholder}) = {receiver_text}"),
)
.add_to(acc, ctx.db);
}
@@ -169,38 +169,38 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"let",
"let Some(_)",
- &format!("let Some({placeholder}) = {receiver_text}"),
+ format!("let Some({placeholder}) = {receiver_text}"),
)
.add_to(acc, ctx.db);
postfix_snippet(
"letm",
"let Some(mut _)",
- &format!("let Some(mut {placeholder}) = {receiver_text}"),
+ format!("let Some(mut {placeholder}) = {receiver_text}"),
)
.add_to(acc, ctx.db);
}
},
_ if is_in_cond => {
- postfix_snippet("let", "let", &format!("let $1 = {receiver_text}"))
+ postfix_snippet("let", "let", format!("let $1 = {receiver_text}"))
.add_to(acc, ctx.db);
}
_ if matches!(parent.kind(), STMT_LIST | EXPR_STMT) => {
- postfix_snippet("let", "let", &format!("let $0 = {receiver_text}{semi}"))
+ postfix_snippet("let", "let", format!("let $0 = {receiver_text}{semi}"))
.add_to(acc, ctx.db);
- postfix_snippet("letm", "let mut", &format!("let mut $0 = {receiver_text}{semi}"))
+ postfix_snippet("letm", "let mut", format!("let mut $0 = {receiver_text}{semi}"))
.add_to(acc, ctx.db);
}
_ if matches!(parent.kind(), MATCH_ARM | CLOSURE_EXPR) => {
postfix_snippet(
"let",
"let",
- &format!("{{\n let $1 = {receiver_text};\n $0\n}}"),
+ format!("{{\n let $1 = {receiver_text};\n $0\n}}"),
)
.add_to(acc, ctx.db);
postfix_snippet(
"letm",
"let mut",
- &format!("{{\n let mut $1 = {receiver_text};\n $0\n}}"),
+ format!("{{\n let mut $1 = {receiver_text};\n $0\n}}"),
)
.add_to(acc, ctx.db);
}
@@ -215,7 +215,7 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"match",
"match expr {}",
- &format!("match {receiver_text} {{\n Ok(${{1:_}}) => {{$2}},\n Err(${{3:_}}) => {{$0}},\n}}"),
+ format!("match {receiver_text} {{\n Ok(${{1:_}}) => {{$2}},\n Err(${{3:_}}) => {{$0}},\n}}"),
)
.add_to(acc, ctx.db);
}
@@ -223,7 +223,7 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"match",
"match expr {}",
- &format!(
+ format!(
"match {receiver_text} {{\n Some(${{1:_}}) => {{$2}},\n None => {{$0}},\n}}"
),
)
@@ -234,7 +234,7 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"match",
"match expr {}",
- &format!("match {receiver_text} {{\n ${{1:_}} => {{$0}},\n}}"),
+ format!("match {receiver_text} {{\n ${{1:_}} => {{$0}},\n}}"),
)
.add_to(acc, ctx.db);
}
@@ -246,23 +246,21 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"ifl",
"if let Ok {}",
- &format!("if let Ok({placeholder}) = {receiver_text} {{\n $0\n}}"),
+ format!("if let Ok({placeholder}) = {receiver_text} {{\n $0\n}}"),
)
.add_to(acc, ctx.db);
postfix_snippet(
"lete",
"let Ok else {}",
- &format!(
- "let Ok({placeholder}) = {receiver_text} else {{\n $2\n}};\n$0"
- ),
+ format!("let Ok({placeholder}) = {receiver_text} else {{\n $2\n}};\n$0"),
)
.add_to(acc, ctx.db);
postfix_snippet(
"while",
"while let Ok {}",
- &format!("while let Ok({placeholder}) = {receiver_text} {{\n $0\n}}"),
+ format!("while let Ok({placeholder}) = {receiver_text} {{\n $0\n}}"),
)
.add_to(acc, ctx.db);
}
@@ -270,14 +268,14 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"ifl",
"if let Some {}",
- &format!("if let Some({placeholder}) = {receiver_text} {{\n $0\n}}"),
+ format!("if let Some({placeholder}) = {receiver_text} {{\n $0\n}}"),
)
.add_to(acc, ctx.db);
postfix_snippet(
"lete",
"let Some else {}",
- &format!(
+ format!(
"let Some({placeholder}) = {receiver_text} else {{\n $2\n}};\n$0"
),
)
@@ -286,18 +284,18 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"while",
"while let Some {}",
- &format!("while let Some({placeholder}) = {receiver_text} {{\n $0\n}}"),
+ format!("while let Some({placeholder}) = {receiver_text} {{\n $0\n}}"),
)
.add_to(acc, ctx.db);
}
}
} else if receiver_ty.is_bool() || receiver_ty.is_unknown() {
- postfix_snippet("if", "if expr {}", &format!("if {receiver_text} {{\n $0\n}}"))
+ postfix_snippet("if", "if expr {}", format!("if {receiver_text} {{\n $0\n}}"))
.add_to(acc, ctx.db);
postfix_snippet(
"while",
"while expr {}",
- &format!("while {receiver_text} {{\n $0\n}}"),
+ format!("while {receiver_text} {{\n $0\n}}"),
)
.add_to(acc, ctx.db);
} else if let Some(trait_) = ctx.famous_defs().core_iter_IntoIterator()
@@ -306,14 +304,14 @@ pub(crate) fn complete_postfix(
postfix_snippet(
"for",
"for ele in expr {}",
- &format!("for ele in {receiver_text} {{\n $0\n}}"),
+ format!("for ele in {receiver_text} {{\n $0\n}}"),
)
.add_to(acc, ctx.db);
}
}
if receiver_ty.is_bool() || receiver_ty.is_unknown() {
- postfix_snippet("not", "!expr", &format!("!{receiver_text}")).add_to(acc, ctx.db);
+ postfix_snippet("not", "!expr", format!("!{receiver_text}")).add_to(acc, ctx.db);
}
let block_should_be_wrapped = if let ast::Expr::BlockExpr(block) = dot_receiver {
@@ -328,11 +326,11 @@ pub(crate) fn complete_postfix(
let (open_paren, close_paren) = if is_in_cond { ("(", ")") } else { ("", "") };
let unsafe_completion_string =
format!("{open_paren}unsafe {open_brace}{receiver_text}{close_brace}{close_paren}");
- postfix_snippet("unsafe", "unsafe {}", &unsafe_completion_string).add_to(acc, ctx.db);
+ postfix_snippet("unsafe", "unsafe {}", unsafe_completion_string).add_to(acc, ctx.db);
let const_completion_string =
format!("{open_paren}const {open_brace}{receiver_text}{close_brace}{close_paren}");
- postfix_snippet("const", "const {}", &const_completion_string).add_to(acc, ctx.db);
+ postfix_snippet("const", "const {}", const_completion_string).add_to(acc, ctx.db);
}
if let ast::Expr::Literal(literal) = dot_receiver.clone()
@@ -341,11 +339,11 @@ pub(crate) fn complete_postfix(
add_format_like_completions(acc, ctx, dot_receiver, cap, &literal_text, semi);
}
- postfix_snippet("return", "return expr", &format!("return {receiver_text}{semi}"))
+ postfix_snippet("return", "return expr", format!("return {receiver_text}{semi}"))
.add_to(acc, ctx.db);
if let Some(BreakableKind::Block | BreakableKind::Loop) = expr_ctx.in_breakable {
- postfix_snippet("break", "break expr", &format!("break {receiver_text}{semi}"))
+ postfix_snippet("break", "break expr", format!("break {receiver_text}{semi}"))
.add_to(acc, ctx.db);
}
}
@@ -476,7 +474,7 @@ fn build_postfix_snippet_builder<'ctx>(
ctx: &'ctx CompletionContext<'_>,
cap: SnippetCap,
receiver: &'ctx ast::Expr,
-) -> Option<impl Fn(&str, &str, &str) -> Builder + 'ctx> {
+) -> Option<impl Fn(&str, &str, String) -> Builder + 'ctx> {
let receiver_range = ctx.sema.original_range_opt(receiver.syntax())?.range;
if ctx.source_range().end() < receiver_range.start() {
// This shouldn't happen, yet it does. I assume this might be due to an incorrect token
@@ -492,9 +490,9 @@ fn build_postfix_snippet_builder<'ctx>(
ctx: &'ctx CompletionContext<'_>,
cap: SnippetCap,
delete_range: TextRange,
- ) -> impl Fn(&str, &str, &str) -> Builder + 'ctx {
+ ) -> impl Fn(&str, &str, String) -> Builder + 'ctx {
move |label, detail, snippet| {
- let edit = TextEdit::replace(delete_range, snippet.to_owned());
+ let edit = TextEdit::replace(delete_range, snippet);
let mut item = CompletionItem::new(
CompletionItemKind::Snippet,
ctx.source_range(),
@@ -520,7 +518,7 @@ fn build_postfix_snippet_builder<'ctx>(
fn add_custom_postfix_completions(
acc: &mut Completions,
ctx: &CompletionContext<'_>,
- postfix_snippet: impl Fn(&str, &str, &str) -> Builder,
+ postfix_snippet: impl Fn(&str, &str, String) -> Builder,
receiver_text: &str,
) -> Option<()> {
ImportScope::find_insert_use_container(&ctx.token.parent()?, &ctx.sema)?;
@@ -531,9 +529,10 @@ fn add_custom_postfix_completions(
None => return,
};
let body = snippet.postfix_snippet(receiver_text);
+ let document = Documentation::new_owned(format!("```rust\n{body}\n```"));
let mut builder =
- postfix_snippet(trigger, snippet.description.as_deref().unwrap_or_default(), &body);
- builder.documentation(Documentation::new_owned(format!("```rust\n{body}\n```")));
+ postfix_snippet(trigger, snippet.description.as_deref().unwrap_or_default(), body);
+ builder.documentation(document);
for import in imports.into_iter() {
builder.add_import(import);
}
diff --git a/crates/ide-completion/src/completions/postfix/format_like.rs b/crates/ide-completion/src/completions/postfix/format_like.rs
index 85a8899fd1..6b0e9f31c4 100644
--- a/crates/ide-completion/src/completions/postfix/format_like.rs
+++ b/crates/ide-completion/src/completions/postfix/format_like.rs
@@ -73,7 +73,7 @@ pub(crate) fn add_format_like_completions(
format!(r#"{}({}, {}){semi}"#, macro_name, out, exprs.join(", "))
};
- postfix_snippet(label, macro_name, &snippet).add_to(acc, ctx.db);
+ postfix_snippet(label, macro_name, snippet).add_to(acc, ctx.db);
}
}
}