From 076f22b2c993a0acb17a234066409439d5541d6d Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Tue, 24 Aug 2021 21:28:58 +0300 Subject: [PATCH] fix(45501): don't remove spaces between empty object literals with enabled insertSpaceAfterOpeningAndBeforeClosingEmptyBraces (#45514) --- src/services/formatting/rules.ts | 3 +-- .../formattingNoSpaceBetweenEmptyBraceBrackets.ts | 11 +++++++++++ .../formattingSpaceBetweenEmptyBraceBrackets.ts | 11 +++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/formattingNoSpaceBetweenEmptyBraceBrackets.ts create mode 100644 tests/cases/fourslash/formattingSpaceBetweenEmptyBraceBrackets.ts diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 76a0d348531..ba09773eb9b 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -95,7 +95,6 @@ namespace ts.formatting { // Also should not apply to }) rule("SpaceBetweenCloseBraceAndElse", SyntaxKind.CloseBraceToken, SyntaxKind.ElseKeyword, [isNonJsxSameLineTokenContext], RuleAction.InsertSpace), rule("SpaceBetweenCloseBraceAndWhile", SyntaxKind.CloseBraceToken, SyntaxKind.WhileKeyword, [isNonJsxSameLineTokenContext], RuleAction.InsertSpace), - rule("NoSpaceBetweenEmptyBraceBrackets", SyntaxKind.OpenBraceToken, SyntaxKind.CloseBraceToken, [isNonJsxSameLineTokenContext, isObjectContext], RuleAction.DeleteSpace), // Add a space after control dec context if the next character is an open bracket ex: 'if (false)[a, b] = [1, 2];' -> 'if (false) [a, b] = [1, 2];' rule("SpaceAfterConditionalClosingParen", SyntaxKind.CloseParenToken, SyntaxKind.OpenBracketToken, [isControlDeclContext], RuleAction.InsertSpace), @@ -270,9 +269,9 @@ namespace ts.formatting { // Insert a space after { and before } in single-line contexts, but remove space from empty object literals {}. rule("SpaceAfterOpenBrace", SyntaxKind.OpenBraceToken, anyToken, [isOptionEnabledOrUndefined("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), isBraceWrappedContext], RuleAction.InsertSpace), rule("SpaceBeforeCloseBrace", anyToken, SyntaxKind.CloseBraceToken, [isOptionEnabledOrUndefined("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), isBraceWrappedContext], RuleAction.InsertSpace), - rule("NoSpaceBetweenEmptyBraceBrackets", SyntaxKind.OpenBraceToken, SyntaxKind.CloseBraceToken, [isNonJsxSameLineTokenContext, isObjectContext], RuleAction.DeleteSpace), rule("NoSpaceAfterOpenBrace", SyntaxKind.OpenBraceToken, anyToken, [isOptionDisabled("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), isNonJsxSameLineTokenContext], RuleAction.DeleteSpace), rule("NoSpaceBeforeCloseBrace", anyToken, SyntaxKind.CloseBraceToken, [isOptionDisabled("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"), isNonJsxSameLineTokenContext], RuleAction.DeleteSpace), + rule("NoSpaceBetweenEmptyBraceBrackets", SyntaxKind.OpenBraceToken, SyntaxKind.CloseBraceToken, [isOptionDisabledOrUndefined("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces"), isNonJsxSameLineTokenContext, isObjectContext], RuleAction.DeleteSpace), // Insert a space after opening and before closing empty brace brackets rule("SpaceBetweenEmptyBraceBrackets", SyntaxKind.OpenBraceToken, SyntaxKind.CloseBraceToken, [isOptionEnabled("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces")], RuleAction.InsertSpace), diff --git a/tests/cases/fourslash/formattingNoSpaceBetweenEmptyBraceBrackets.ts b/tests/cases/fourslash/formattingNoSpaceBetweenEmptyBraceBrackets.ts new file mode 100644 index 00000000000..bcf57c6731f --- /dev/null +++ b/tests/cases/fourslash/formattingNoSpaceBetweenEmptyBraceBrackets.ts @@ -0,0 +1,11 @@ +/// + +////const a = { }; +////const b = {}; + +format.setOption("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces", false); +format.document(); +verify.currentFileContentIs( +`const a = {}; +const b = {};` +); diff --git a/tests/cases/fourslash/formattingSpaceBetweenEmptyBraceBrackets.ts b/tests/cases/fourslash/formattingSpaceBetweenEmptyBraceBrackets.ts new file mode 100644 index 00000000000..67d369ce1df --- /dev/null +++ b/tests/cases/fourslash/formattingSpaceBetweenEmptyBraceBrackets.ts @@ -0,0 +1,11 @@ +/// + +////const a = { }; +////const b = {}; + +format.setOption("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces", true); +format.document(); +verify.currentFileContentIs( +`const a = { }; +const b = { };` +);