diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 264cad7e557..d63e21d476f 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1827,7 +1827,9 @@ namespace ts { return preferences.quotePreference === "single" ? QuotePreference.Single : QuotePreference.Double; } else { - const firstModuleSpecifier = sourceFile.imports && find(sourceFile.imports, isStringLiteral); + // ignore synthetic import added when importHelpers: true + const firstModuleSpecifier = sourceFile.imports && + find(sourceFile.imports, n => isStringLiteral(n) && !nodeIsSynthesized(n.parent)) as StringLiteral; return firstModuleSpecifier ? quotePreferenceFromString(firstModuleSpecifier, sourceFile) : QuotePreference.Double; } } diff --git a/tests/cases/fourslash/importFixes_quotePreferenceDouble_importHelpers.ts b/tests/cases/fourslash/importFixes_quotePreferenceDouble_importHelpers.ts new file mode 100644 index 00000000000..9dec6b13adc --- /dev/null +++ b/tests/cases/fourslash/importFixes_quotePreferenceDouble_importHelpers.ts @@ -0,0 +1,16 @@ +/// + +// @importHelpers: true +// @filename: /a.ts +////export default () => {}; + +// @filename: /b.ts +////export default () => {}; + +// @filename: /test.ts +////import a from "./a"; +////[|b|]; + +goTo.file("/test.ts"); +verify.importFixAtPosition([`import b from "./b"; +b`]); diff --git a/tests/cases/fourslash/importFixes_quotePreferenceSingle_importHelpers.ts b/tests/cases/fourslash/importFixes_quotePreferenceSingle_importHelpers.ts new file mode 100644 index 00000000000..a8097f6a841 --- /dev/null +++ b/tests/cases/fourslash/importFixes_quotePreferenceSingle_importHelpers.ts @@ -0,0 +1,16 @@ +/// + +// @importHelpers: true +// @filename: /a.ts +////export default () => {}; + +// @filename: /b.ts +////export default () => {}; + +// @filename: /test.ts +////import a from './a'; +////[|b|]; + +goTo.file("/test.ts"); +verify.importFixAtPosition([`import b from './b'; +b`]);