diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts
index 2095f062bd1..f29890806b5 100644
--- a/src/services/formatting/rules.ts
+++ b/src/services/formatting/rules.ts
@@ -705,11 +705,18 @@ namespace ts.formatting {
case SyntaxKind.ClassDeclaration:
case SyntaxKind.ModuleDeclaration:
case SyntaxKind.EnumDeclaration:
- case SyntaxKind.Block:
case SyntaxKind.CatchClause:
case SyntaxKind.ModuleBlock:
case SyntaxKind.SwitchStatement:
return true;
+ case SyntaxKind.Block: {
+ const blockParent = context.currentTokenParent.parent;
+ if (blockParent.kind !== SyntaxKind.ArrowFunction &&
+ blockParent.kind !== SyntaxKind.FunctionExpression)
+ {
+ return true;
+ }
+ }
}
return false;
}
diff --git a/tests/cases/fourslash/formatVariableDeclarationList.ts b/tests/cases/fourslash/formatVariableDeclarationList.ts
index 37392d38c62..089eceb1684 100644
--- a/tests/cases/fourslash/formatVariableDeclarationList.ts
+++ b/tests/cases/fourslash/formatVariableDeclarationList.ts
@@ -37,4 +37,4 @@ verify.currentLineContentIs(" x = 'Foo';");
goTo.marker("11");
verify.currentLineContentIs(" return fun;");
goTo.marker("12");
-verify.currentLineContentIs(" } (fun1));");
+verify.currentLineContentIs(" }(fun1));");
\ No newline at end of file
diff --git a/tests/cases/fourslash/formattingJsxElements.ts b/tests/cases/fourslash/formattingJsxElements.ts
index 2b3b396ed4c..a27bc809456 100644
--- a/tests/cases/fourslash/formattingJsxElements.ts
+++ b/tests/cases/fourslash/formattingJsxElements.ts
@@ -72,6 +72,8 @@
////) ;/*closingParenInJsxElement2*/
////;/*jsxExpressionSpaces*/
////;/*jsxExpressionSpaces2*/
+//// {}}/*jsxExpressionSpaces3*/
+/////>;/*jsxDanglingSelfClosingToken*/
format.document();
goTo.marker("autoformat");
@@ -120,8 +122,7 @@ goTo.marker("expressionIndent");
verify.indentationIs(12);
goTo.marker("danglingBracketAutoformat")
-// TODO: verify.currentLineContentIs(" >");
-verify.currentLineContentIs(" >");
+verify.currentLineContentIs(" >");
goTo.marker("closingTagAutoformat");
verify.currentLineContentIs(" ");
@@ -145,4 +146,8 @@ verify.currentLineContentIs(") ;");
goTo.marker("jsxExpressionSpaces");
verify.currentLineContentIs(";");
goTo.marker("jsxExpressionSpaces2");
-verify.currentLineContentIs(";");
\ No newline at end of file
+verify.currentLineContentIs(";");
+goTo.marker("jsxExpressionSpaces3");
+verify.currentLineContentIs(" { }}");
+goTo.marker("jsxDanglingSelfClosingToken");
+verify.currentLineContentIs("/>;");
\ No newline at end of file