diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 73a6d2428ca..39a94b032fd 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -398,6 +398,9 @@ export function getAllRules(): RuleSpec[] { // Remove extra space between for and await rule("SpaceBetweenForAndAwaitKeyword", SyntaxKind.ForKeyword, SyntaxKind.AwaitKeyword, [isNonJsxSameLineTokenContext], RuleAction.InsertSpace), + // Remove extra spaces between ... and type name in tuple spread + rule("SpaceBetweenDotDotDotAndTypeName", SyntaxKind.DotDotDotToken, typeNames, [isNonJsxSameLineTokenContext], RuleAction.DeleteSpace), + // Add a space between statements. All keywords except (do,else,case) has open/close parens after them. // So, we have a rule to add a space for [),Any], [do,Any], [else,Any], and [case,Any] rule( diff --git a/tests/cases/fourslash/formatRemoveSpaceBetweenDotDotDotAndTypeName.ts b/tests/cases/fourslash/formatRemoveSpaceBetweenDotDotDotAndTypeName.ts new file mode 100644 index 00000000000..59fede78d7a --- /dev/null +++ b/tests/cases/fourslash/formatRemoveSpaceBetweenDotDotDotAndTypeName.ts @@ -0,0 +1,12 @@ +/// + +//// let a: [... any[]]; +//// let b: [... number[]]; +//// let c: [... string[]]; + +format.document(); +verify.currentFileContentIs( + `let a: [...any[]]; +let b: [...number[]]; +let c: [...string[]];` +);