From 428f5a19d6d17ffd30e9f757fedc8b72d68ba299 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Fri, 15 May 2020 11:45:16 -0700 Subject: [PATCH 1/4] delete import comments on organize imports --- src/services/organizeImports.ts | 2 +- src/services/textChanges.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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..fe926d031756e 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -286,6 +286,12 @@ namespace ts.textChanges { this.deletedNodes.push({ sourceFile, node }); } + public deleteNode(sourceFile: SourceFile, node: Node, options: ConfigurableStartEnd = { leadingTriviaOption: LeadingTriviaOption.IncludeAll }): void { + const startPosition = getAdjustedStartPosition(sourceFile, node, options); + const endPosition = getAdjustedEndPosition(sourceFile, node, options); + this.deleteRange(sourceFile, { pos: startPosition, end: endPosition }); + } + public deleteModifier(sourceFile: SourceFile, modifier: Modifier): void { this.deleteRange(sourceFile, { pos: modifier.getStart(sourceFile), end: skipTrivia(sourceFile.text, modifier.end, /*stopAfterLineBreak*/ true) }); } From 8003791d9f10d4b3e16454c6a92e638cdbd65628 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Fri, 15 May 2020 11:45:49 -0700 Subject: [PATCH 2/4] add unit test --- .../unittests/services/organizeImports.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/testRunner/unittests/services/organizeImports.ts b/src/testRunner/unittests/services/organizeImports.ts index 627928c03e89c..66f78c11e54f2 100644 --- a/src/testRunner/unittests/services/organizeImports.ts +++ b/src/testRunner/unittests/services/organizeImports.ts @@ -591,6 +591,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", { From 26eaf706ab19dc802107d30de9c7d822fcaf0e1e Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Fri, 15 May 2020 11:46:12 -0700 Subject: [PATCH 3/4] accept new baseline --- .../reference/organizeImports/SortComments.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 tests/baselines/reference/organizeImports/SortComments.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"; From 81d1732fd8970aa8b80dbbea30ccb45043990978 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Fri, 15 May 2020 12:44:43 -0700 Subject: [PATCH 4/4] respond to review comment --- src/services/textChanges.ts | 4 +--- src/testRunner/unittests/services/organizeImports.ts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index fe926d031756e..216301fc01124 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -287,9 +287,7 @@ namespace ts.textChanges { } public deleteNode(sourceFile: SourceFile, node: Node, options: ConfigurableStartEnd = { leadingTriviaOption: LeadingTriviaOption.IncludeAll }): void { - const startPosition = getAdjustedStartPosition(sourceFile, node, options); - const endPosition = getAdjustedEndPosition(sourceFile, node, options); - this.deleteRange(sourceFile, { pos: startPosition, end: endPosition }); + this.deleteRange(sourceFile, getAdjustedRange(sourceFile, node, node, options)); } public deleteModifier(sourceFile: SourceFile, modifier: Modifier): void { diff --git a/src/testRunner/unittests/services/organizeImports.ts b/src/testRunner/unittests/services/organizeImports.ts index 66f78c11e54f2..3e2b1108931e4 100644 --- a/src/testRunner/unittests/services/organizeImports.ts +++ b/src/testRunner/unittests/services/organizeImports.ts @@ -591,7 +591,7 @@ import "lib1"; }, { path: "/lib1.ts", content: "" }, { path: "/lib2.ts", content: "" }); - + testOrganizeImports("SortComments", { path: "/test.ts",