From a546850ac5c30a1b8a835497abe9f7e92e9f2b95 Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Thu, 21 Jul 2016 10:03:33 -0700 Subject: [PATCH 1/6] Only error in non-declaration file --- src/compiler/program.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 39a55afe27a13..51d415e7a02fe 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -2275,7 +2275,7 @@ namespace ts { programDiagnostics.add(createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided)); } } - else if (firstExternalModuleSourceFile && languageVersion < ScriptTarget.ES6 && options.module === ModuleKind.None) { + else if (firstExternalModuleSourceFile && !isDeclarationFile(firstExternalModuleSourceFile) && languageVersion < ScriptTarget.ES6 && options.module === ModuleKind.None) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet const span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none)); From 1e3cc0bc5b6b85e4981daaa35560eb6f1cb09923 Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Thu, 21 Jul 2016 10:05:14 -0700 Subject: [PATCH 2/6] Add tests and baselines --- ...mportExportModuleAugmentationInDeclarationFile.symbols | 8 ++++++++ ...gImportExportModuleAugmentationInDeclarationFile.types | 8 ++++++++ ...singImportExportModuleAugmentationInDeclarationFile.ts | 5 +++++ 3 files changed, 21 insertions(+) create mode 100644 tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols create mode 100644 tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.types create mode 100644 tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols new file mode 100644 index 0000000000000..5fbefb77b471c --- /dev/null +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/0.d.ts === + +export = a; // error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. +>a : Symbol(a, Decl(0.d.ts, 2, 11)) + +declare var a: number; +>a : Symbol(a, Decl(0.d.ts, 2, 11)) + diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.types b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.types new file mode 100644 index 0000000000000..22dac6dab12ff --- /dev/null +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/0.d.ts === + +export = a; // error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. +>a : number + +declare var a: number; +>a : number + diff --git a/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts new file mode 100644 index 0000000000000..48f15e6d3b840 --- /dev/null +++ b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts @@ -0,0 +1,5 @@ +// @module: none +// @filename: 0.d.ts + +export = a; // error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. +declare var a: number; \ No newline at end of file From dbed41a47443a171e9c8483901023cf34bb71582 Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Thu, 21 Jul 2016 14:17:10 -0700 Subject: [PATCH 3/6] Addess PR: get the first non-ambient external module file --- src/compiler/program.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 51d415e7a02fe..d70d1f8f60d9e 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -2263,7 +2263,7 @@ namespace ts { const languageVersion = options.target || ScriptTarget.ES3; const outFile = options.outFile || options.out; - const firstExternalModuleSourceFile = forEach(files, f => isExternalModule(f) ? f : undefined); + const firstNonAmbientExternalModuleSourceFile = forEach(files, f => isExternalModule(f) && !isDeclarationFile(f) ? f : undefined); if (options.isolatedModules) { if (options.module === ModuleKind.None && languageVersion < ScriptTarget.ES6) { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher)); @@ -2275,10 +2275,10 @@ namespace ts { programDiagnostics.add(createFileDiagnostic(firstNonExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided)); } } - else if (firstExternalModuleSourceFile && !isDeclarationFile(firstExternalModuleSourceFile) && languageVersion < ScriptTarget.ES6 && options.module === ModuleKind.None) { + else if (firstNonAmbientExternalModuleSourceFile && languageVersion < ScriptTarget.ES6 && options.module === ModuleKind.None) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet - const span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none)); + const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, firstNonAmbientExternalModuleSourceFile.externalModuleIndicator); + programDiagnostics.add(createFileDiagnostic(firstNonAmbientExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none)); } // Cannot specify module gen that isn't amd or system with --out @@ -2286,9 +2286,9 @@ namespace ts { if (options.module && !(options.module === ModuleKind.AMD || options.module === ModuleKind.System)) { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Only_amd_and_system_modules_are_supported_alongside_0, options.out ? "out" : "outFile")); } - else if (options.module === undefined && firstExternalModuleSourceFile) { - const span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system, options.out ? "out" : "outFile")); + else if (options.module === undefined && firstNonAmbientExternalModuleSourceFile) { + const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, firstNonAmbientExternalModuleSourceFile.externalModuleIndicator); + programDiagnostics.add(createFileDiagnostic(firstNonAmbientExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system, options.out ? "out" : "outFile")); } } From 45f9d6e36800ac72d2b913e642bff0fa5496574e Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Thu, 21 Jul 2016 14:18:20 -0700 Subject: [PATCH 4/6] Rename test file and update baseline --- ...ImportExportModuleAugmentationInDeclarationFile1.symbols} | 0 ...ngImportExportModuleAugmentationInDeclarationFile1.types} | 0 ...orUsingImportExportModuleAugmentationInDeclarationFile.ts | 5 ----- ...rUsingImportExportModuleAugmentationInDeclarationFile1.ts | 5 +++++ 4 files changed, 5 insertions(+), 5 deletions(-) rename tests/baselines/reference/{noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols => noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols} (100%) rename tests/baselines/reference/{noErrorUsingImportExportModuleAugmentationInDeclarationFile.types => noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types} (100%) delete mode 100644 tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts create mode 100644 tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.ts diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols similarity index 100% rename from tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.symbols rename to tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.types b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types similarity index 100% rename from tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile.types rename to tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types diff --git a/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts deleted file mode 100644 index 48f15e6d3b840..0000000000000 --- a/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile.ts +++ /dev/null @@ -1,5 +0,0 @@ -// @module: none -// @filename: 0.d.ts - -export = a; // error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. -declare var a: number; \ No newline at end of file diff --git a/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.ts b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.ts new file mode 100644 index 0000000000000..71ec411a4f5ce --- /dev/null +++ b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.ts @@ -0,0 +1,5 @@ +// @module: none +// @filename: 0.d.ts + +export = a; +declare var a: number; \ No newline at end of file From 0f16343a158d46c1af835109f676d98888d11ce7 Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Thu, 21 Jul 2016 14:19:20 -0700 Subject: [PATCH 5/6] Add tests and baselines --- ...ModuleAugmentationInDeclarationFile2.errors.txt | 12 ++++++++++++ ...rtExportModuleAugmentationInDeclarationFile2.js | 13 +++++++++++++ ...ModuleAugmentationInDeclarationFile3.errors.txt | 13 +++++++++++++ ...rtExportModuleAugmentationInDeclarationFile3.js | 14 ++++++++++++++ ...rtExportModuleAugmentationInDeclarationFile2.ts | 8 ++++++++ ...rtExportModuleAugmentationInDeclarationFile3.ts | 8 ++++++++ 6 files changed, 68 insertions(+) create mode 100644 tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt create mode 100644 tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js create mode 100644 tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt create mode 100644 tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js create mode 100644 tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.ts create mode 100644 tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.ts diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt new file mode 100644 index 0000000000000..2403d0ce36623 --- /dev/null +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/1.ts(2,1): error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + + +==== tests/cases/compiler/1.ts (1 errors) ==== + + export var j = "hello" + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + +==== tests/cases/compiler/0.d.ts (0 errors) ==== + export = a; + declare var a: number; \ No newline at end of file diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js new file mode 100644 index 0000000000000..b9d556e57dbec --- /dev/null +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.ts] //// + +//// [1.ts] + +export var j = "hello" + +//// [0.d.ts] +export = a; +declare var a: number; + +//// [1.js] +"use strict"; +exports.j = "hello"; diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt new file mode 100644 index 0000000000000..f417582c5f6cb --- /dev/null +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/1.ts(1,1): error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + + +==== tests/cases/compiler/0.d.ts (0 errors) ==== + + export = a; + declare var a: number; + +==== tests/cases/compiler/1.ts (1 errors) ==== + export var j = "hello" + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + \ No newline at end of file diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js new file mode 100644 index 0000000000000..a5fc871662bcd --- /dev/null +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js @@ -0,0 +1,14 @@ +//// [tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.ts] //// + +//// [0.d.ts] + +export = a; +declare var a: number; + +//// [1.ts] +export var j = "hello" + + +//// [1.js] +"use strict"; +exports.j = "hello"; diff --git a/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.ts b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.ts new file mode 100644 index 0000000000000..160f80dba972c --- /dev/null +++ b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.ts @@ -0,0 +1,8 @@ +// @module: none + +// @filename: 1.ts +export var j = "hello"; // error + +// @filename: 0.d.ts +export = a; +declare var a: number; \ No newline at end of file diff --git a/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.ts b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.ts new file mode 100644 index 0000000000000..e13933a13d0a4 --- /dev/null +++ b/tests/cases/compiler/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.ts @@ -0,0 +1,8 @@ +// @module: none + +// @filename: 0.d.ts +export = a; +declare var a: number; + +// @filename: 1.ts +export var j = "hello"; // error From 194ecb8c4f3361a170fb1201164169cc5201f005 Mon Sep 17 00:00:00 2001 From: Yui T Date: Thu, 21 Jul 2016 21:24:55 -0700 Subject: [PATCH 6/6] Update baselines --- ...ngImportExportModuleAugmentationInDeclarationFile1.symbols | 2 +- ...singImportExportModuleAugmentationInDeclarationFile1.types | 2 +- ...mportExportModuleAugmentationInDeclarationFile2.errors.txt | 4 ++-- ...orUsingImportExportModuleAugmentationInDeclarationFile2.js | 4 ++-- ...mportExportModuleAugmentationInDeclarationFile3.errors.txt | 4 ++-- ...orUsingImportExportModuleAugmentationInDeclarationFile3.js | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols index 5fbefb77b471c..d3d338e0d14d7 100644 --- a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/0.d.ts === -export = a; // error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. +export = a; >a : Symbol(a, Decl(0.d.ts, 2, 11)) declare var a: number; diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types index 22dac6dab12ff..c5e2c0b80f889 100644 --- a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile1.types @@ -1,6 +1,6 @@ === tests/cases/compiler/0.d.ts === -export = a; // error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. +export = a; >a : number declare var a: number; diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt index 2403d0ce36623..bcf5d91c01510 100644 --- a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.errors.txt @@ -3,8 +3,8 @@ tests/cases/compiler/1.ts(2,1): error TS1148: Cannot use imports, exports, or mo ==== tests/cases/compiler/1.ts (1 errors) ==== - export var j = "hello" - ~~~~~~~~~~~~~~~~~~~~~~ + export var j = "hello"; // error + ~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. ==== tests/cases/compiler/0.d.ts (0 errors) ==== diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js index b9d556e57dbec..b56988de44cbb 100644 --- a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile2.js @@ -2,7 +2,7 @@ //// [1.ts] -export var j = "hello" +export var j = "hello"; // error //// [0.d.ts] export = a; @@ -10,4 +10,4 @@ declare var a: number; //// [1.js] "use strict"; -exports.j = "hello"; +exports.j = "hello"; // error diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt index f417582c5f6cb..eb215693cd756 100644 --- a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.errors.txt @@ -7,7 +7,7 @@ tests/cases/compiler/1.ts(1,1): error TS1148: Cannot use imports, exports, or mo declare var a: number; ==== tests/cases/compiler/1.ts (1 errors) ==== - export var j = "hello" - ~~~~~~~~~~~~~~~~~~~~~~ + export var j = "hello"; // error + ~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. \ No newline at end of file diff --git a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js index a5fc871662bcd..8c75af240346e 100644 --- a/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js +++ b/tests/baselines/reference/noErrorUsingImportExportModuleAugmentationInDeclarationFile3.js @@ -6,9 +6,9 @@ export = a; declare var a: number; //// [1.ts] -export var j = "hello" +export var j = "hello"; // error //// [1.js] "use strict"; -exports.j = "hello"; +exports.j = "hello"; // error