Skip to content

Commit fbe7a4f

Browse files
authored
Merge pull request #13125 from flowmemo/fix-13114
fix issue #13114
2 parents e1872df + 4886b42 commit fbe7a4f

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/services/formatting/rules.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,12 +264,12 @@ namespace ts.formatting {
264264
this.SpaceAfterSemicolon = new Rule(RuleDescriptor.create3(SyntaxKind.SemicolonToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext), RuleAction.Space));
265265

266266
// Space after }.
267-
this.SpaceAfterCloseBrace = new Rule(RuleDescriptor.create3(SyntaxKind.CloseBraceToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext, Rules.IsAfterCodeBlockContext), RuleAction.Space));
267+
this.SpaceAfterCloseBrace = new Rule(RuleDescriptor.create3(SyntaxKind.CloseBraceToken, Shared.TokenRange.FromRange(SyntaxKind.FirstToken, SyntaxKind.LastToken, [SyntaxKind.CloseParenToken])), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext, Rules.IsAfterCodeBlockContext), RuleAction.Space));
268268

269269
// Special case for (}, else) and (}, while) since else & while tokens are not part of the tree which makes SpaceAfterCloseBrace rule not applied
270270
this.SpaceBetweenCloseBraceAndElse = new Rule(RuleDescriptor.create1(SyntaxKind.CloseBraceToken, SyntaxKind.ElseKeyword), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext), RuleAction.Space));
271271
this.SpaceBetweenCloseBraceAndWhile = new Rule(RuleDescriptor.create1(SyntaxKind.CloseBraceToken, SyntaxKind.WhileKeyword), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext), RuleAction.Space));
272-
this.NoSpaceAfterCloseBrace = new Rule(RuleDescriptor.create3(SyntaxKind.CloseBraceToken, Shared.TokenRange.FromTokens([SyntaxKind.CloseParenToken, SyntaxKind.CloseBracketToken, SyntaxKind.CommaToken, SyntaxKind.SemicolonToken])), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext), RuleAction.Delete));
272+
this.NoSpaceAfterCloseBrace = new Rule(RuleDescriptor.create3(SyntaxKind.CloseBraceToken, Shared.TokenRange.FromTokens([SyntaxKind.CloseBracketToken, SyntaxKind.CommaToken, SyntaxKind.SemicolonToken])), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext), RuleAction.Delete));
273273

274274
// No space for dot
275275
this.NoSpaceBeforeDot = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.DotToken), RuleOperation.create2(new RuleOperationContext(Rules.IsNonJsxSameLineTokenContext), RuleAction.Delete));
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
/////*1*/({});
4+
/////*2*/( {});
5+
/////*3*/({foo:42});
6+
/////*4*/( {foo:42} );
7+
/////*5*/var bar = (function (a) { });
8+
9+
format.setOption("InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis", true);
10+
format.document();
11+
goTo.marker('1');
12+
verify.currentLineContentIs('( {} );');
13+
goTo.marker('2');
14+
verify.currentLineContentIs('( {} );');
15+
goTo.marker('3');
16+
verify.currentLineContentIs('( { foo: 42 } );');
17+
goTo.marker('4');
18+
verify.currentLineContentIs('( { foo: 42 } );');
19+
goTo.marker('5');
20+
verify.currentLineContentIs('var bar = ( function( a ) { } );');
21+
22+
format.setOption("InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis", false);
23+
format.document();
24+
goTo.marker('1');
25+
verify.currentLineContentIs('({});');
26+
goTo.marker('2');
27+
verify.currentLineContentIs('({});');
28+
goTo.marker('3');
29+
verify.currentLineContentIs('({ foo: 42 });');
30+
goTo.marker('4');
31+
verify.currentLineContentIs('({ foo: 42 });');
32+
goTo.marker('5');
33+
verify.currentLineContentIs('var bar = (function(a) { });');

0 commit comments

Comments
 (0)