Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-expand/src/fixup.rs')
-rw-r--r--crates/hir-expand/src/fixup.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/crates/hir-expand/src/fixup.rs b/crates/hir-expand/src/fixup.rs
index b6d5828da9..0af29681a1 100644
--- a/crates/hir-expand/src/fixup.rs
+++ b/crates/hir-expand/src/fixup.rs
@@ -110,7 +110,8 @@ pub(crate) fn fixup_syntax(
}
},
ast::ExprStmt(it) => {
- if it.semicolon_token().is_none() {
+ let needs_semi = it.semicolon_token().is_none() && it.expr().map_or(false, |e| e.syntax().kind() != SyntaxKind::BLOCK_EXPR);
+ if needs_semi {
append.insert(node.clone().into(), vec![
Leaf::Punct(Punct {
char: ';',
@@ -908,4 +909,19 @@ fn foo () {|| __ra_fixup}
"#]],
);
}
+
+ #[test]
+ fn fixup_regression_() {
+ check(
+ r#"
+fn foo() {
+ {}
+ {}
+}
+"#,
+ expect![[r#"
+fn foo () {{} {}}
+"#]],
+ );
+ }
}