Skip to content

Commit 4406717

Browse files
authored
add config to insert space for empty braces (#35427)
1 parent a76a166 commit 4406717

File tree

5 files changed

+9
-0
lines changed

5 files changed

+9
-0
lines changed

src/services/formatting/rules.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@ namespace ts.formatting {
274274
rule("NoSpaceAfterOpenBrace", SyntaxKind.OpenBraceToken, anyToken, [isOptionDisabled("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), isNonJsxSameLineTokenContext], RuleAction.DeleteSpace),
275275
rule("NoSpaceBeforeCloseBrace", anyToken, SyntaxKind.CloseBraceToken, [isOptionDisabled("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), isNonJsxSameLineTokenContext], RuleAction.DeleteSpace),
276276

277+
// Insert a space after opening and before closing empty brace brackets
278+
rule("SpaceBetweenEmptyBraceBrackets", SyntaxKind.OpenBraceToken, SyntaxKind.CloseBraceToken, [isOptionEnabled("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces")], RuleAction.InsertSpace),
279+
rule("NoSpaceBetweenEmptyBraceBrackets", SyntaxKind.OpenBraceToken, SyntaxKind.CloseBraceToken, [isOptionDisabled("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces"), isNonJsxSameLineTokenContext], RuleAction.DeleteSpace),
280+
277281
// Insert space after opening and before closing template string braces
278282
rule("SpaceAfterTemplateHeadAndMiddle", [SyntaxKind.TemplateHead, SyntaxKind.TemplateMiddle], anyToken, [isOptionEnabled("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"), isNonJsxSameLineTokenContext], RuleAction.InsertSpace),
279283
rule("SpaceBeforeTemplateMiddleAndTail", anyToken, [SyntaxKind.TemplateMiddle, SyntaxKind.TemplateTail], [isOptionEnabled("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"), isNonJsxSameLineTokenContext], RuleAction.InsertSpace),

src/services/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,7 @@ namespace ts {
794794
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
795795
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
796796
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
797+
readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
797798
readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
798799
readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
799800
readonly insertSpaceAfterTypeAssertion?: boolean;

tests/baselines/reference/api/tsserverlibrary.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5541,6 +5541,7 @@ declare namespace ts {
55415541
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
55425542
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
55435543
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
5544+
readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
55445545
readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
55455546
readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
55465547
readonly insertSpaceAfterTypeAssertion?: boolean;

tests/baselines/reference/api/typescript.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5541,6 +5541,7 @@ declare namespace ts {
55415541
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
55425542
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
55435543
readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
5544+
readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
55445545
readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
55455546
readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
55465547
readonly insertSpaceAfterTypeAssertion?: boolean;

tests/cases/fourslash/formattingOptionsChange.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
/////*placeOpenBraceOnNewLineForControlBlocks*/if (true) {
1616
////}
1717
/////*insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces*/{ var t = 1}; var {a,b } = { a: 'sw', b:'r' };function f( { a, b}) { }
18+
/////*insertSpaceAfterOpeningAndBeforeClosingEmptyBraces*/constructor() { }
1819

1920
const defaultFormatOption = format.copyFormatOptions();
2021

@@ -31,6 +32,7 @@ runTest("insertSpaceBeforeTypeAnnotation", "const bar : number = 1;", "const bar
3132
runTest("placeOpenBraceOnNewLineForFunctions", "class foo", "class foo {");
3233
runTest("placeOpenBraceOnNewLineForControlBlocks", "if (true)", "if (true) {");
3334
runTest("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces", "{ var t = 1 }; var { a, b } = { a: 'sw', b: 'r' }; function f({ a, b }) { }", "{var t = 1}; var {a, b} = {a: 'sw', b: 'r'}; function f({a, b}) {}");
35+
runTest("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces", "constructor() { }", "constructor() {}");
3436

3537
function runTest(propertyName: string, expectedStringWhenTrue: string, expectedStringWhenFalse: string) {
3638
// Go to the correct file

0 commit comments

Comments
 (0)