Unnamed repository; edit this file 'description' to name the repository.
internal: remove redundant str::to_owned in postfix
| -rw-r--r-- | crates/ide-completion/src/completions/postfix.rs | 89 | ||||
| -rw-r--r-- | crates/ide-completion/src/completions/postfix/format_like.rs | 2 |
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); } } } |