From edd31a15056d85f2ee175770e00e971ac806f855 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Mon, 21 May 2018 16:57:18 -0700 Subject: [PATCH] Preserver jsx imports even when the compiler option is not set ...based on feedback from VS Code users. Fixes #23287 --- src/harness/unittests/organizeImports.ts | 20 +++++++++++++++++++ src/services/organizeImports.ts | 2 +- .../organizeImports/JsxFactoryUnusedJs.ts | 7 +++++++ .../organizeImports/JsxFactoryUnusedJsx.ts | 7 +++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/organizeImports/JsxFactoryUnusedJs.ts create mode 100644 tests/baselines/reference/organizeImports/JsxFactoryUnusedJsx.ts diff --git a/src/harness/unittests/organizeImports.ts b/src/harness/unittests/organizeImports.ts index 94f99856777..61b4e240d9b 100644 --- a/src/harness/unittests/organizeImports.ts +++ b/src/harness/unittests/organizeImports.ts @@ -513,6 +513,26 @@ D(); import { React, Other } from "react";
; +`, + }, + reactLibFile); + + testOrganizeImports("JsxFactoryUnusedJsx", + { + path: "/test.jsx", + content: ` +import { React, Other } from "react"; +`, + }, + reactLibFile); + + // Note: Since the file extension does not end with "x", the jsx compiler option + // will not be enabled. The import should be retained regardless. + testOrganizeImports("JsxFactoryUnusedJs", + { + path: "/test.js", + content: ` +import { React, Other } from "react"; `, }, reactLibFile); diff --git a/src/services/organizeImports.ts b/src/services/organizeImports.ts index 99bac64973f..30f7f1584a4 100644 --- a/src/services/organizeImports.ts +++ b/src/services/organizeImports.ts @@ -92,7 +92,7 @@ namespace ts.OrganizeImports { function removeUnusedImports(oldImports: ReadonlyArray, sourceFile: SourceFile, program: Program) { const typeChecker = program.getTypeChecker(); const jsxNamespace = typeChecker.getJsxNamespace(); - const jsxContext = sourceFile.languageVariant === LanguageVariant.JSX && program.getCompilerOptions().jsx; + const jsxContext = sourceFile.languageVariant === LanguageVariant.JSX; const usedImports: ImportDeclaration[] = []; diff --git a/tests/baselines/reference/organizeImports/JsxFactoryUnusedJs.ts b/tests/baselines/reference/organizeImports/JsxFactoryUnusedJs.ts new file mode 100644 index 00000000000..6a97e7f660a --- /dev/null +++ b/tests/baselines/reference/organizeImports/JsxFactoryUnusedJs.ts @@ -0,0 +1,7 @@ +// ==ORIGINAL== + +import { React, Other } from "react"; + +// ==ORGANIZED== + +import { React } from "react"; diff --git a/tests/baselines/reference/organizeImports/JsxFactoryUnusedJsx.ts b/tests/baselines/reference/organizeImports/JsxFactoryUnusedJsx.ts new file mode 100644 index 00000000000..6a97e7f660a --- /dev/null +++ b/tests/baselines/reference/organizeImports/JsxFactoryUnusedJsx.ts @@ -0,0 +1,7 @@ +// ==ORIGINAL== + +import { React, Other } from "react"; + +// ==ORGANIZED== + +import { React } from "react";