From fefdd74c2cab9db0ed4169f4cc6a723e431f0ff0 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Tue, 19 May 2020 20:48:08 +0000 Subject: [PATCH] Cherry-pick PR #38599 into release-3.9 Component commits: 428f5a19d6 delete import comments on organize imports 8003791d9f add unit test 26eaf706ab accept new baseline 81d1732fd8 respond to review comment --- src/services/organizeImports.ts | 2 +- src/services/textChanges.ts | 4 ++++ .../unittests/services/organizeImports.ts | 16 ++++++++++++++++ .../reference/organizeImports/SortComments.ts | 17 +++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/organizeImports/SortComments.ts diff --git a/src/services/organizeImports.ts b/src/services/organizeImports.ts index 142bdbe879100..1a394bc349bed 100644 --- a/src/services/organizeImports.ts +++ b/src/services/organizeImports.ts @@ -76,7 +76,7 @@ namespace ts.OrganizeImports { // Delete any subsequent imports. for (let i = 1; i < oldImportDecls.length; i++) { - changeTracker.delete(sourceFile, oldImportDecls[i]); + changeTracker.deleteNode(sourceFile, oldImportDecls[i]); } } } diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index 245306ac10954..216301fc01124 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -286,6 +286,10 @@ namespace ts.textChanges { this.deletedNodes.push({ sourceFile, node }); } + public deleteNode(sourceFile: SourceFile, node: Node, options: ConfigurableStartEnd = { leadingTriviaOption: LeadingTriviaOption.IncludeAll }): void { + this.deleteRange(sourceFile, getAdjustedRange(sourceFile, node, node, options)); + } + public deleteModifier(sourceFile: SourceFile, modifier: Modifier): void { this.deleteRange(sourceFile, { pos: modifier.getStart(sourceFile), end: skipTrivia(sourceFile.text, modifier.end, /*stopAfterLineBreak*/ true) }); } diff --git a/src/testRunner/unittests/services/organizeImports.ts b/src/testRunner/unittests/services/organizeImports.ts index 627928c03e89c..3e2b1108931e4 100644 --- a/src/testRunner/unittests/services/organizeImports.ts +++ b/src/testRunner/unittests/services/organizeImports.ts @@ -592,6 +592,22 @@ import "lib1"; { path: "/lib1.ts", content: "" }, { path: "/lib2.ts", content: "" }); + testOrganizeImports("SortComments", + { + path: "/test.ts", + content: ` +// Header +import "lib3"; +// Comment2 +import "lib2"; +// Comment1 +import "lib1"; +`, + }, + { path: "/lib1.ts", content: "" }, + { path: "/lib2.ts", content: "" }, + { path: "/lib3.ts", content: "" }); + testOrganizeImports("AmbientModule", { path: "/test.ts", diff --git a/tests/baselines/reference/organizeImports/SortComments.ts b/tests/baselines/reference/organizeImports/SortComments.ts new file mode 100644 index 0000000000000..761bca1a2127b --- /dev/null +++ b/tests/baselines/reference/organizeImports/SortComments.ts @@ -0,0 +1,17 @@ +// ==ORIGINAL== + +// Header +import "lib3"; +// Comment2 +import "lib2"; +// Comment1 +import "lib1"; + +// ==ORGANIZED== + +// Header +// Comment1 +import "lib1"; +// Comment2 +import "lib2"; +import "lib3";