Skip to content

Commit 6860373

Browse files
authored
fix(52177): Wrong space in type assertions when using array (#52184)
1 parent a05b7ec commit 6860373

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

src/services/formatting/rules.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,12 @@ export function getAllRules(): RuleSpec[] {
240240
rule("NoSpaceBetweenCloseParenAndAngularBracket", SyntaxKind.CloseParenToken, SyntaxKind.LessThanToken, [isNonJsxSameLineTokenContext, isTypeArgumentOrParameterOrAssertionContext], RuleAction.DeleteSpace),
241241
rule("NoSpaceAfterOpenAngularBracket", SyntaxKind.LessThanToken, anyToken, [isNonJsxSameLineTokenContext, isTypeArgumentOrParameterOrAssertionContext], RuleAction.DeleteSpace),
242242
rule("NoSpaceBeforeCloseAngularBracket", anyToken, SyntaxKind.GreaterThanToken, [isNonJsxSameLineTokenContext, isTypeArgumentOrParameterOrAssertionContext], RuleAction.DeleteSpace),
243-
rule("NoSpaceAfterCloseAngularBracket",
244-
SyntaxKind.GreaterThanToken,
245-
[SyntaxKind.OpenParenToken, SyntaxKind.OpenBracketToken, SyntaxKind.GreaterThanToken, SyntaxKind.CommaToken],
246-
[isNonJsxSameLineTokenContext, isTypeArgumentOrParameterOrAssertionContext, isNotFunctionDeclContext /*To prevent an interference with the SpaceBeforeOpenParenInFuncDecl rule*/],
247-
RuleAction.DeleteSpace),
243+
rule("NoSpaceAfterCloseAngularBracket", SyntaxKind.GreaterThanToken, [SyntaxKind.OpenParenToken, SyntaxKind.OpenBracketToken, SyntaxKind.GreaterThanToken, SyntaxKind.CommaToken], [
244+
isNonJsxSameLineTokenContext,
245+
isTypeArgumentOrParameterOrAssertionContext,
246+
isNotFunctionDeclContext /*To prevent an interference with the SpaceBeforeOpenParenInFuncDecl rule*/,
247+
isNonTypeAssertionContext
248+
], RuleAction.DeleteSpace),
248249

249250
// decorators
250251
rule("SpaceBeforeAt", [SyntaxKind.CloseParenToken, SyntaxKind.Identifier], SyntaxKind.AtToken, [isNonJsxSameLineTokenContext], RuleAction.InsertSpace),
@@ -835,6 +836,10 @@ function isTypeAssertionContext(context: FormattingContext): boolean {
835836
return context.contextNode.kind === SyntaxKind.TypeAssertionExpression;
836837
}
837838

839+
function isNonTypeAssertionContext(context: FormattingContext): boolean {
840+
return !isTypeAssertionContext(context);
841+
}
842+
838843
function isVoidOpContext(context: FormattingContext): boolean {
839844
return context.currentTokenSpan.kind === SyntaxKind.VoidKeyword && context.currentTokenParent.kind === SyntaxKind.VoidExpression;
840845
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/// <reference path="fourslash.ts" />
2+
3+
////let a = <string> "";
4+
////let b = <number> 1;
5+
////let c = <any[]> [];
6+
////let d = <string[]> [];
7+
////let e = <string[]> ["e"];
8+
9+
format.setFormatOptions({
10+
insertSpaceAfterTypeAssertion: true,
11+
})
12+
format.document();
13+
verify.currentFileContentIs(
14+
`let a=<string> "";
15+
let b=<number> 1;
16+
let c=<any[]> [];
17+
let d=<string[]> [];
18+
let e=<string[]> ["e"];`
19+
);

0 commit comments

Comments
 (0)