Skip to content

Commit db6364f

Browse files
Merge #7972
7972: fix: add semicolon after type ascription r=matklad a=conradludgate Fixes #7971 Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2 parents 610eba3 + 233820d commit db6364f

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

crates/ide_assists/src/handlers/add_turbo_fish.rs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,20 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext) -> Option<(
5656
if let Some(let_stmt) = ctx.find_node_at_offset::<ast::LetStmt>() {
5757
if let_stmt.colon_token().is_none() {
5858
let type_pos = let_stmt.pat()?.syntax().last_token()?.text_range().end();
59+
let semi_pos = let_stmt.syntax().last_token()?.text_range().end();
60+
5961
acc.add(
6062
AssistId("add_type_ascription", AssistKind::RefactorRewrite),
6163
"Add `: _` before assignment operator",
6264
ident.text_range(),
63-
|builder| match ctx.config.snippet_cap {
64-
Some(cap) => builder.insert_snippet(cap, type_pos, ": ${0:_}"),
65-
None => builder.insert(type_pos, ": _"),
65+
|builder| {
66+
if let_stmt.semicolon_token().is_none() {
67+
builder.insert(semi_pos, ";");
68+
}
69+
match ctx.config.snippet_cap {
70+
Some(cap) => builder.insert_snippet(cap, type_pos, ": ${0:_}"),
71+
None => builder.insert(type_pos, ": _"),
72+
}
6673
},
6774
)?
6875
} else {
@@ -265,4 +272,24 @@ fn main() {
265272
"#,
266273
);
267274
}
275+
276+
#[test]
277+
fn add_type_ascription_append_semicolon() {
278+
check_assist_by_label(
279+
add_turbo_fish,
280+
r#"
281+
fn make<T>() -> T {}
282+
fn main() {
283+
let x = make$0()
284+
}
285+
"#,
286+
r#"
287+
fn make<T>() -> T {}
288+
fn main() {
289+
let x: ${0:_} = make();
290+
}
291+
"#,
292+
"Add `: _` before assignment operator",
293+
);
294+
}
268295
}

0 commit comments

Comments
 (0)