From b996287e00088f0dcdf138b363a4b84d4b98a403 Mon Sep 17 00:00:00 2001 From: Minh Quy Date: Thu, 17 Mar 2022 17:57:10 +0100 Subject: [PATCH] fix(48191): Duplicates comments on "Add definite assignment assertion to property" (#48299) * Suppress leading and trailing comments for adding missing definite assignment assertion action * Suppress leading and trailing comments for adding missing initalizer action * Test for initializer property action --- .../codefixes/fixStrictClassInitialization.ts | 2 ++ .../codeFixClassPropertyInitialization17.ts | 17 +++++++++++++++++ .../codeFixClassPropertyInitialization18.ts | 15 +++++++++++++++ .../codeFixClassPropertyInitialization19.ts | 17 +++++++++++++++++ .../codeFixClassPropertyInitialization20.ts | 15 +++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 tests/cases/fourslash/codeFixClassPropertyInitialization17.ts create mode 100644 tests/cases/fourslash/codeFixClassPropertyInitialization18.ts create mode 100644 tests/cases/fourslash/codeFixClassPropertyInitialization19.ts create mode 100644 tests/cases/fourslash/codeFixClassPropertyInitialization20.ts diff --git a/src/services/codefixes/fixStrictClassInitialization.ts b/src/services/codefixes/fixStrictClassInitialization.ts index f9fcad0f2d7..67f5e41f7d4 100644 --- a/src/services/codefixes/fixStrictClassInitialization.ts +++ b/src/services/codefixes/fixStrictClassInitialization.ts @@ -67,6 +67,7 @@ namespace ts.codefix { } function addDefiniteAssignmentAssertion(changeTracker: textChanges.ChangeTracker, propertyDeclarationSourceFile: SourceFile, propertyDeclaration: PropertyDeclaration): void { + suppressLeadingAndTrailingTrivia(propertyDeclaration); const property = factory.updatePropertyDeclaration( propertyDeclaration, propertyDeclaration.decorators, @@ -108,6 +109,7 @@ namespace ts.codefix { } function addInitializer(changeTracker: textChanges.ChangeTracker, propertyDeclarationSourceFile: SourceFile, propertyDeclaration: PropertyDeclaration, initializer: Expression): void { + suppressLeadingAndTrailingTrivia(propertyDeclaration); const property = factory.updatePropertyDeclaration( propertyDeclaration, propertyDeclaration.decorators, diff --git a/tests/cases/fourslash/codeFixClassPropertyInitialization17.ts b/tests/cases/fourslash/codeFixClassPropertyInitialization17.ts new file mode 100644 index 00000000000..4e89c278553 --- /dev/null +++ b/tests/cases/fourslash/codeFixClassPropertyInitialization17.ts @@ -0,0 +1,17 @@ +/// + +// @strict: true + +//// class T { +//// // comment +//// a: string; +//// } + +verify.codeFix({ + description: `Add definite assignment assertion to property 'a: string;'`, + newFileContent: `class T { + // comment + a!: string; +}`, + index: 1 +}) diff --git a/tests/cases/fourslash/codeFixClassPropertyInitialization18.ts b/tests/cases/fourslash/codeFixClassPropertyInitialization18.ts new file mode 100644 index 00000000000..76dcbdb4e27 --- /dev/null +++ b/tests/cases/fourslash/codeFixClassPropertyInitialization18.ts @@ -0,0 +1,15 @@ +/// + +// @strict: true + +//// class T { +//// a: string; // comment +//// } + +verify.codeFix({ + description: `Add definite assignment assertion to property 'a: string;'`, + newFileContent: `class T { + a!: string; // comment +}`, + index: 1 +}) diff --git a/tests/cases/fourslash/codeFixClassPropertyInitialization19.ts b/tests/cases/fourslash/codeFixClassPropertyInitialization19.ts new file mode 100644 index 00000000000..727dd09aad1 --- /dev/null +++ b/tests/cases/fourslash/codeFixClassPropertyInitialization19.ts @@ -0,0 +1,17 @@ +/// + +// @strict: true + +//// class T { +//// // comment +//// a: 2; +//// } + +verify.codeFix({ + description: `Add initializer to property 'a'`, + newFileContent: `class T { + // comment + a: 2 = 2; +}`, + index: 2 +}) diff --git a/tests/cases/fourslash/codeFixClassPropertyInitialization20.ts b/tests/cases/fourslash/codeFixClassPropertyInitialization20.ts new file mode 100644 index 00000000000..35ccec948bc --- /dev/null +++ b/tests/cases/fourslash/codeFixClassPropertyInitialization20.ts @@ -0,0 +1,15 @@ +/// + +// @strict: true + +//// class T { +//// a: 2; // comment +//// } + +verify.codeFix({ + description: `Add initializer to property 'a'`, + newFileContent: `class T { + a: 2 = 2; // comment +}`, + index: 2 +})