From fd3a84c3f0c80cb201c47399a055625f919a9b91 Mon Sep 17 00:00:00 2001 From: Will Nayes Date: Fri, 2 Sep 2022 15:44:47 -0500 Subject: [PATCH] Report every instance of TS1208 (#50101) * Report every instance of TS1208 * Test case for multiple cases of TS1208 * Add test case for isolatedModules with moduleDetection forced --- src/compiler/program.ts | 11 +++++----- .../isolatedModulesExternalModuleForced.js | 6 ++++++ ...solatedModulesExternalModuleForced.symbols | 4 ++++ .../isolatedModulesExternalModuleForced.types | 4 ++++ ...ModulesNoExternalModuleMultiple.errors.txt | 20 +++++++++++++++++++ ...isolatedModulesNoExternalModuleMultiple.js | 18 +++++++++++++++++ ...tedModulesNoExternalModuleMultiple.symbols | 12 +++++++++++ ...latedModulesNoExternalModuleMultiple.types | 12 +++++++++++ .../isolatedModulesExternalModuleForced.ts | 6 ++++++ ...isolatedModulesNoExternalModuleMultiple.ts | 11 ++++++++++ 10 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 tests/baselines/reference/isolatedModulesExternalModuleForced.js create mode 100644 tests/baselines/reference/isolatedModulesExternalModuleForced.symbols create mode 100644 tests/baselines/reference/isolatedModulesExternalModuleForced.types create mode 100644 tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.errors.txt create mode 100644 tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.js create mode 100644 tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.symbols create mode 100644 tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.types create mode 100644 tests/cases/compiler/isolatedModulesExternalModuleForced.ts create mode 100644 tests/cases/compiler/isolatedModulesNoExternalModuleMultiple.ts diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 2c71fde33d302..4b3b8fca03679 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -3535,11 +3535,12 @@ namespace ts { createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); } - const firstNonExternalModuleSourceFile = find(files, f => !isExternalModule(f) && !isSourceFileJS(f) && !f.isDeclarationFile && f.scriptKind !== ScriptKind.JSON); - if (firstNonExternalModuleSourceFile) { - const span = getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); - programDiagnostics.add(createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, - Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, getBaseFileName(firstNonExternalModuleSourceFile.fileName))); + for (const file of files) { + if (!isExternalModule(file) && !isSourceFileJS(file) && !file.isDeclarationFile && file.scriptKind !== ScriptKind.JSON) { + const span = getErrorSpanForNode(file, file); + programDiagnostics.add(createFileDiagnostic(file, span.start, span.length, + Diagnostics._0_cannot_be_compiled_under_isolatedModules_because_it_is_considered_a_global_script_file_Add_an_import_export_or_an_empty_export_statement_to_make_it_a_module, getBaseFileName(file.fileName))); + } } } else if (firstNonAmbientExternalModuleSourceFile && languageVersion < ScriptTarget.ES2015 && options.module === ModuleKind.None) { diff --git a/tests/baselines/reference/isolatedModulesExternalModuleForced.js b/tests/baselines/reference/isolatedModulesExternalModuleForced.js new file mode 100644 index 0000000000000..1484a3256f5ee --- /dev/null +++ b/tests/baselines/reference/isolatedModulesExternalModuleForced.js @@ -0,0 +1,6 @@ +//// [file1.ts] +var x; + +//// [file1.js] +var x; +export {}; diff --git a/tests/baselines/reference/isolatedModulesExternalModuleForced.symbols b/tests/baselines/reference/isolatedModulesExternalModuleForced.symbols new file mode 100644 index 0000000000000..102ededbdedd2 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesExternalModuleForced.symbols @@ -0,0 +1,4 @@ +=== tests/cases/compiler/file1.ts === +var x; +>x : Symbol(x, Decl(file1.ts, 0, 3)) + diff --git a/tests/baselines/reference/isolatedModulesExternalModuleForced.types b/tests/baselines/reference/isolatedModulesExternalModuleForced.types new file mode 100644 index 0000000000000..fb9a3cf2859a3 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesExternalModuleForced.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/file1.ts === +var x; +>x : any + diff --git a/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.errors.txt b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.errors.txt new file mode 100644 index 0000000000000..f728dd626dc30 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.errors.txt @@ -0,0 +1,20 @@ +tests/cases/compiler/file1.ts(1,1): error TS1208: 'file1.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. +tests/cases/compiler/file2.ts(1,1): error TS1208: 'file2.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. +tests/cases/compiler/file3.ts(1,1): error TS1208: 'file3.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. + + +==== tests/cases/compiler/file1.ts (1 errors) ==== + var x; + ~~~ +!!! error TS1208: 'file1.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. + +==== tests/cases/compiler/file2.ts (1 errors) ==== + var y; + ~~~ +!!! error TS1208: 'file2.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. + +==== tests/cases/compiler/file3.ts (1 errors) ==== + var z; + ~~~ +!!! error TS1208: 'file3.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. + \ No newline at end of file diff --git a/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.js b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.js new file mode 100644 index 0000000000000..ab9e2b2c78c2a --- /dev/null +++ b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.js @@ -0,0 +1,18 @@ +//// [tests/cases/compiler/isolatedModulesNoExternalModuleMultiple.ts] //// + +//// [file1.ts] +var x; + +//// [file2.ts] +var y; + +//// [file3.ts] +var z; + + +//// [file1.js] +var x; +//// [file2.js] +var y; +//// [file3.js] +var z; diff --git a/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.symbols b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.symbols new file mode 100644 index 0000000000000..61690388be891 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +var x; +>x : Symbol(x, Decl(file1.ts, 0, 3)) + +=== tests/cases/compiler/file2.ts === +var y; +>y : Symbol(y, Decl(file2.ts, 0, 3)) + +=== tests/cases/compiler/file3.ts === +var z; +>z : Symbol(z, Decl(file3.ts, 0, 3)) + diff --git a/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.types b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.types new file mode 100644 index 0000000000000..e2221d717bc16 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesNoExternalModuleMultiple.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +var x; +>x : any + +=== tests/cases/compiler/file2.ts === +var y; +>y : any + +=== tests/cases/compiler/file3.ts === +var z; +>z : any + diff --git a/tests/cases/compiler/isolatedModulesExternalModuleForced.ts b/tests/cases/compiler/isolatedModulesExternalModuleForced.ts new file mode 100644 index 0000000000000..cf8e228867769 --- /dev/null +++ b/tests/cases/compiler/isolatedModulesExternalModuleForced.ts @@ -0,0 +1,6 @@ +// @isolatedModules: true +// @target: es6 +// @moduleDetection: force + +// @filename: file1.ts +var x; \ No newline at end of file diff --git a/tests/cases/compiler/isolatedModulesNoExternalModuleMultiple.ts b/tests/cases/compiler/isolatedModulesNoExternalModuleMultiple.ts new file mode 100644 index 0000000000000..aea27f96cafd2 --- /dev/null +++ b/tests/cases/compiler/isolatedModulesNoExternalModuleMultiple.ts @@ -0,0 +1,11 @@ +// @isolatedModules: true +// @target: es6 + +// @filename: file1.ts +var x; + +// @filename: file2.ts +var y; + +// @filename: file3.ts +var z;