Skip to content

Commit 42cffd3

Browse files
committed
fix: add semicolon for postfix format unit like snippets
Example --- ```rust fn main() { "{ 2+2 } { SomeStruct { val: 1, other: 32 } :?}".println } ``` **Before this PR** ```rust fn main() { println!("{} {:?}", 2 + 2, SomeStruct { val: 1, other: 32 }) } ``` **After this PR** ```rust fn main() { println!("{} {:?}", 2 + 2, SomeStruct { val: 1, other: 32 }); } ```
1 parent 5f147cc commit 42cffd3

2 files changed

Lines changed: 22 additions & 11 deletions

File tree

crates/ide-completion/src/completions/postfix.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ pub(crate) fn complete_postfix(
310310
if let ast::Expr::Literal(literal) = dot_receiver.clone()
311311
&& let Some(literal_text) = ast::String::cast(literal.token())
312312
{
313-
add_format_like_completions(acc, ctx, &dot_receiver_including_refs, cap, &literal_text);
313+
add_format_like_completions(acc, ctx, dot_receiver, cap, &literal_text, semi);
314314
}
315315

316316
postfix_snippet("return", "return expr", &format!("return {receiver_text}{semi}"))
@@ -1302,34 +1302,42 @@ fn main() {
13021302
check_edit(
13031303
"panic",
13041304
r#"fn main() { "Panic with {a}".$0 }"#,
1305-
r#"fn main() { panic!("Panic with {a}") }"#,
1305+
r#"fn main() { panic!("Panic with {a}"); }"#,
13061306
);
13071307
check_edit(
13081308
"println",
13091309
r#"fn main() { "{ 2+2 } { SomeStruct { val: 1, other: 32 } :?}".$0 }"#,
1310-
r#"fn main() { println!("{} {:?}", 2+2, SomeStruct { val: 1, other: 32 }) }"#,
1310+
r#"fn main() { println!("{} {:?}", 2+2, SomeStruct { val: 1, other: 32 }); }"#,
13111311
);
13121312
check_edit(
13131313
"loge",
13141314
r#"fn main() { "{2+2}".$0 }"#,
1315-
r#"fn main() { log::error!("{}", 2+2) }"#,
1315+
r#"fn main() { log::error!("{}", 2+2); }"#,
13161316
);
13171317
check_edit(
13181318
"logt",
13191319
r#"fn main() { "{2+2}".$0 }"#,
1320-
r#"fn main() { log::trace!("{}", 2+2) }"#,
1320+
r#"fn main() { log::trace!("{}", 2+2); }"#,
13211321
);
13221322
check_edit(
13231323
"logd",
13241324
r#"fn main() { "{2+2}".$0 }"#,
1325-
r#"fn main() { log::debug!("{}", 2+2) }"#,
1325+
r#"fn main() { log::debug!("{}", 2+2); }"#,
1326+
);
1327+
check_edit(
1328+
"logi",
1329+
r#"fn main() { "{2+2}".$0 }"#,
1330+
r#"fn main() { log::info!("{}", 2+2); }"#,
1331+
);
1332+
check_edit(
1333+
"logw",
1334+
r#"fn main() { "{2+2}".$0 }"#,
1335+
r#"fn main() { log::warn!("{}", 2+2); }"#,
13261336
);
1327-
check_edit("logi", r#"fn main() { "{2+2}".$0 }"#, r#"fn main() { log::info!("{}", 2+2) }"#);
1328-
check_edit("logw", r#"fn main() { "{2+2}".$0 }"#, r#"fn main() { log::warn!("{}", 2+2) }"#);
13291337
check_edit(
13301338
"loge",
13311339
r#"fn main() { "{2+2}".$0 }"#,
1332-
r#"fn main() { log::error!("{}", 2+2) }"#,
1340+
r#"fn main() { log::error!("{}", 2+2); }"#,
13331341
);
13341342
}
13351343

crates/ide-completion/src/completions/postfix/format_like.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@ static KINDS: &[(&str, &str)] = &[
4040
("logw", "log::warn!"),
4141
("loge", "log::error!"),
4242
];
43+
static HAS_VALUE: &[&str] = &["format"];
4344

4445
pub(crate) fn add_format_like_completions(
4546
acc: &mut Completions,
4647
ctx: &CompletionContext<'_>,
4748
dot_receiver: &ast::Expr,
4849
cap: SnippetCap,
4950
receiver_text: &ast::String,
51+
semi: &str,
5052
) {
5153
let postfix_snippet = match build_postfix_snippet_builder(ctx, cap, dot_receiver) {
5254
Some(it) => it,
@@ -64,10 +66,11 @@ pub(crate) fn add_format_like_completions(
6466

6567
let exprs = with_placeholders(exprs);
6668
for (label, macro_name) in KINDS {
69+
let semi = if HAS_VALUE.contains(label) { "" } else { semi };
6770
let snippet = if exprs.is_empty() {
68-
format!(r#"{macro_name}({out})"#)
71+
format!(r#"{macro_name}({out}){semi}"#)
6972
} else {
70-
format!(r#"{}({}, {})"#, macro_name, out, exprs.join(", "))
73+
format!(r#"{}({}, {}){semi}"#, macro_name, out, exprs.join(", "))
7174
};
7275

7376
postfix_snippet(label, macro_name, &snippet).add_to(acc, ctx.db);

0 commit comments

Comments
 (0)