From 2c134db31df48ba5f158f490168dea733a11ae44 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Fri, 15 Dec 2023 19:05:25 +0200 Subject: [PATCH] fix(56699): [Formatting] Missing space after implements / extends generic (#56707) --- src/services/formatting/rules.ts | 2 +- .../formatSpaceAfterImplementsExtends.ts | 27 +++++++++++++++++++ tests/cases/fourslash/genericsFormatting.ts | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/formatSpaceAfterImplementsExtends.ts diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 7c6f4bfe85c..73a6d2428ca 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -88,7 +88,7 @@ export function getAllRules(): RuleSpec[] { const functionOpenBraceLeftTokenRange = anyTokenIncludingMultilineComments; // Place a space before open brace in a TypeScript declaration that has braces as children (class, module, enum, etc) - const typeScriptOpenBraceLeftTokenRange = tokenRangeFrom([SyntaxKind.Identifier, SyntaxKind.MultiLineCommentTrivia, SyntaxKind.ClassKeyword, SyntaxKind.ExportKeyword, SyntaxKind.ImportKeyword]); + const typeScriptOpenBraceLeftTokenRange = tokenRangeFrom([SyntaxKind.Identifier, SyntaxKind.GreaterThanToken, SyntaxKind.MultiLineCommentTrivia, SyntaxKind.ClassKeyword, SyntaxKind.ExportKeyword, SyntaxKind.ImportKeyword]); // Place a space before open brace in a control flow construct const controlOpenBraceLeftTokenRange = tokenRangeFrom([SyntaxKind.CloseParenToken, SyntaxKind.MultiLineCommentTrivia, SyntaxKind.DoKeyword, SyntaxKind.TryKeyword, SyntaxKind.FinallyKeyword, SyntaxKind.ElseKeyword, SyntaxKind.CatchKeyword]); diff --git a/tests/cases/fourslash/formatSpaceAfterImplementsExtends.ts b/tests/cases/fourslash/formatSpaceAfterImplementsExtends.ts new file mode 100644 index 00000000000..b732c99aa2c --- /dev/null +++ b/tests/cases/fourslash/formatSpaceAfterImplementsExtends.ts @@ -0,0 +1,27 @@ +/// + +////class C1 implements Array{ +////} +//// +////class C2 implements Number{ +////} +//// +////class C3 extends Array{ +////} +//// +////class C4 extends Number{ +////} + +format.document(); +verify.currentFileContentIs( +`class C1 implements Array { +} + +class C2 implements Number { +} + +class C3 extends Array { +} + +class C4 extends Number { +}`); diff --git a/tests/cases/fourslash/genericsFormatting.ts b/tests/cases/fourslash/genericsFormatting.ts index bb2a218a440..e22b16d433f 100644 --- a/tests/cases/fourslash/genericsFormatting.ts +++ b/tests/cases/fourslash/genericsFormatting.ts @@ -26,7 +26,7 @@ format.document(); goTo.marker("inClassDeclaration"); -verify.currentLineContentIs("class Foo {"); +verify.currentLineContentIs("class Foo {"); goTo.marker("inMethodDeclaration"); verify.currentLineContentIs(" public method(a: T1, b: Array): Map> {");