From 38631e6412eb069da9f946f58c61554422f5d032 Mon Sep 17 00:00:00 2001 From: TRCYX <2915154295@qq.com> Date: Sat, 28 May 2022 01:09:52 +0800 Subject: [PATCH] fix(30003): formatter deletes comment after trailing comma (#49168) Co-authored-by: TRCYX --- src/services/formatting/formatting.ts | 8 +++----- tests/cases/fourslash/formatNoSpaceBeforeCloseBrace3.ts | 8 ++++++++ tests/cases/fourslash/formatNoSpaceBeforeCloseBrace4.ts | 8 ++++++++ tests/cases/fourslash/formatNoSpaceBeforeCloseBrace5.ts | 8 ++++++++ tests/cases/fourslash/formatNoSpaceBeforeCloseBrace6.ts | 8 ++++++++ 5 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 tests/cases/fourslash/formatNoSpaceBeforeCloseBrace3.ts create mode 100644 tests/cases/fourslash/formatNoSpaceBeforeCloseBrace4.ts create mode 100644 tests/cases/fourslash/formatNoSpaceBeforeCloseBrace5.ts create mode 100644 tests/cases/fourslash/formatNoSpaceBeforeCloseBrace6.ts diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index b3e84023d17..256398d9a20 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -836,11 +836,9 @@ namespace ts.formatting { if (listEndToken !== SyntaxKind.Unknown && formattingScanner.isOnToken() && formattingScanner.getStartPos() < originalRange.end) { let tokenInfo: TokenInfo | undefined = formattingScanner.readTokenInfo(parent); if (tokenInfo.token.kind === SyntaxKind.CommaToken && isCallLikeExpression(parent)) { - const commaTokenLine = sourceFile.getLineAndCharacterOfPosition(tokenInfo.token.pos).line; - if (startLine !== commaTokenLine) { - formattingScanner.advance(); - tokenInfo = formattingScanner.isOnToken() ? formattingScanner.readTokenInfo(parent) : undefined; - } + // consume the comma + consumeTokenAndAdvanceScanner(tokenInfo, parent, listDynamicIndentation, parent); + tokenInfo = formattingScanner.isOnToken() ? formattingScanner.readTokenInfo(parent) : undefined; } // consume the list end token only if it is still belong to the parent diff --git a/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace3.ts b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace3.ts new file mode 100644 index 00000000000..57a89239dfe --- /dev/null +++ b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace3.ts @@ -0,0 +1,8 @@ +/// + +////foo( +//// 1, /* comment */ ); + +format.document(); +verify.currentFileContentIs(`foo( + 1, /* comment */);`); diff --git a/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace4.ts b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace4.ts new file mode 100644 index 00000000000..fc7a18ec8c7 --- /dev/null +++ b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace4.ts @@ -0,0 +1,8 @@ +/// + +////new Foo(1 +////, /* comment */ ); + +format.document(); +verify.currentFileContentIs(`new Foo(1 + , /* comment */);`); diff --git a/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace5.ts b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace5.ts new file mode 100644 index 00000000000..59d385dafbc --- /dev/null +++ b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace5.ts @@ -0,0 +1,8 @@ +/// + +////new Foo(1, +//// /* comment */ ); + +format.document(); +verify.currentFileContentIs(`new Foo(1, + /* comment */);`); diff --git a/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace6.ts b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace6.ts new file mode 100644 index 00000000000..6243c91ee42 --- /dev/null +++ b/tests/cases/fourslash/formatNoSpaceBeforeCloseBrace6.ts @@ -0,0 +1,8 @@ +/// + +////new Foo(1, /* comment */ +//// ); + +format.document(); +verify.currentFileContentIs(`new Foo(1, /* comment */ +);`);