fix(59779): The semicolons: "remove" formatting option doesn't remove extraneous semicolons (#59797)

This commit is contained in:
Oleksandr T. 2024-10-23 01:42:28 +03:00 коммит произвёл GitHub
Родитель 241a6c9589
Коммит a62ac67b50
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
3 изменённых файлов: 57 добавлений и 2 удалений

Просмотреть файл

@ -933,6 +933,13 @@ function isSemicolonDeletionContext(context: FormattingContext): boolean {
|| nextTokenKind === SyntaxKind.EndOfFileToken;
}
if (
nextTokenKind === SyntaxKind.SemicolonToken &&
context.currentTokenSpan.kind === SyntaxKind.SemicolonToken
) {
return true;
}
if (
nextTokenKind === SyntaxKind.SemicolonClassElement ||
nextTokenKind === SyntaxKind.SemicolonToken

Просмотреть файл

@ -51,7 +51,7 @@ class C {
["p"]
zero: void
["one"] = {};
["two"];
["two"]
;
}
a;
@ -59,7 +59,7 @@ a;
b;
(3)
4;
/ regex /;
/ regex /
;
[];
/** blah */[0]

Просмотреть файл

@ -0,0 +1,48 @@
/// <reference path="fourslash.ts" />
////declare const opt: number | undefined;
////
////const a = 1;
////const b = 2;
////;[1, 2, 3]
////
////const c = opt ? 1 : 2;
////const d = opt ? 1 : 2;
////;[1, 2, 3]
////
////const e = opt ?? 1;
////const f = opt ?? 1;
////;[1, 2, 3]
////
////type a = 1;
////type b = 2;
////;[1, 2, 3]
////
////type c = typeof opt extends 1 ? 1 : 2;
////type d = typeof opt extends 1 ? 1 : 2;
////;[1, 2, 3]
format.setFormatOptions({ ...format.copyFormatOptions(), semicolons: ts.SemicolonPreference.Remove });
format.document();
verify.currentFileContentIs(
`declare const opt: number | undefined
const a = 1
const b = 2
;[1, 2, 3]
const c = opt ? 1 : 2
const d = opt ? 1 : 2
;[1, 2, 3]
const e = opt ?? 1
const f = opt ?? 1
;[1, 2, 3]
type a = 1
type b = 2
;[1, 2, 3]
type c = typeof opt extends 1 ? 1 : 2
type d = typeof opt extends 1 ? 1 : 2
;[1, 2, 3]`);