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";