diff --git a/src/services/preProcess.ts b/src/services/preProcess.ts index d5c384e9161cc..8c92cd2134f33 100644 --- a/src/services/preProcess.ts +++ b/src/services/preProcess.ts @@ -376,7 +376,9 @@ namespace ts { } break; } - token = scanner.scan(); + if (length(stack)) { + token = scanner.scan(); + } } nextToken(); } diff --git a/src/testRunner/unittests/services/preProcessFile.ts b/src/testRunner/unittests/services/preProcessFile.ts index a6369d6e4d4cf..a0ff91a26b1b4 100644 --- a/src/testRunner/unittests/services/preProcessFile.ts +++ b/src/testRunner/unittests/services/preProcessFile.ts @@ -205,6 +205,22 @@ describe("unittests:: services:: PreProcessFile:", () => { /* eslint-enable no-template-curly-in-string */ }); + it("Ignores imports in template strings", () => { + /* eslint-disable no-template-curly-in-string */ + test("a ? `&${a}` : `#${b}`;\n\n `import(\"${moduleSpecifier}\").${id}`;", + /*readImportFile*/ true, + /*detectJavaScriptImports*/ true, + { + referencedFiles: [], + typeReferenceDirectives: [], + libReferenceDirectives: [], + importedFiles: [], + ambientExternalModules: undefined, + isLibFile: false + }); + /* eslint-enable no-template-curly-in-string */ + }); + it("Correctly returns imports after a template expression", () => { /* eslint-disable no-template-curly-in-string */ test("`${foo}`; import \"./foo\";",