From 3866a5048b86e44beba4ab928a454809c7c5a576 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 10 Jul 2018 15:00:18 -0700 Subject: [PATCH] Report errors for module generation other than "commonjs" with --resolveJsonModule Fixes #25517 --- src/compiler/diagnosticMessages.json | 4 +++ src/compiler/program.ts | 4 +++ ...ireOfJsonFileWithModuleEmitNone.errors.txt | 18 ++++++++++++ .../requireOfJsonFileWithModuleEmitNone.js | 14 +++++++++ ...equireOfJsonFileWithModuleEmitNone.symbols | 4 +++ .../requireOfJsonFileWithModuleEmitNone.types | 4 +++ ...equireOfJsonFileWithModuleEmitUndefined.js | 19 ++++++++++++ ...eOfJsonFileWithModuleEmitUndefined.symbols | 12 ++++++++ ...ireOfJsonFileWithModuleEmitUndefined.types | 16 ++++++++++ ...WithModuleNodeResolutionEmitAmd.errors.txt | 12 ++++++++ ...JsonFileWithModuleNodeResolutionEmitAmd.js | 21 ++++++++++++++ ...ileWithModuleNodeResolutionEmitAmd.symbols | 12 ++++++++ ...nFileWithModuleNodeResolutionEmitAmd.types | 16 ++++++++++ ...hModuleNodeResolutionEmitEs2015.errors.txt | 12 ++++++++ ...nFileWithModuleNodeResolutionEmitEs2015.js | 17 +++++++++++ ...WithModuleNodeResolutionEmitEs2015.symbols | 12 ++++++++ ...leWithModuleNodeResolutionEmitEs2015.types | 16 ++++++++++ ...hModuleNodeResolutionEmitEsNext.errors.txt | 12 ++++++++ ...nFileWithModuleNodeResolutionEmitEsNext.js | 17 +++++++++++ ...WithModuleNodeResolutionEmitEsNext.symbols | 12 ++++++++ ...leWithModuleNodeResolutionEmitEsNext.types | 16 ++++++++++ ...ithModuleNodeResolutionEmitNone.errors.txt | 15 ++++++++++ ...sonFileWithModuleNodeResolutionEmitNone.js | 19 ++++++++++++ ...leWithModuleNodeResolutionEmitNone.symbols | 12 ++++++++ ...FileWithModuleNodeResolutionEmitNone.types | 16 ++++++++++ ...hModuleNodeResolutionEmitSystem.errors.txt | 12 ++++++++ ...nFileWithModuleNodeResolutionEmitSystem.js | 26 +++++++++++++++++ ...WithModuleNodeResolutionEmitSystem.symbols | 12 ++++++++ ...leWithModuleNodeResolutionEmitSystem.types | 16 ++++++++++ ...WithModuleNodeResolutionEmitUmd.errors.txt | 12 ++++++++ ...JsonFileWithModuleNodeResolutionEmitUmd.js | 29 +++++++++++++++++++ ...ileWithModuleNodeResolutionEmitUmd.symbols | 12 ++++++++ ...nFileWithModuleNodeResolutionEmitUmd.types | 16 ++++++++++ ...leWithModuleNodeResolutionEmitUndefined.js | 19 ++++++++++++ ...hModuleNodeResolutionEmitUndefined.symbols | 12 ++++++++ ...ithModuleNodeResolutionEmitUndefined.types | 16 ++++++++++ .../requireOfJsonFileWithModuleEmitNone.ts | 13 +++++++++ ...equireOfJsonFileWithModuleEmitUndefined.ts | 12 ++++++++ ...JsonFileWithModuleNodeResolutionEmitAmd.ts | 14 +++++++++ ...nFileWithModuleNodeResolutionEmitEs2015.ts | 14 +++++++++ ...nFileWithModuleNodeResolutionEmitEsNext.ts | 14 +++++++++ ...sonFileWithModuleNodeResolutionEmitNone.ts | 14 +++++++++ ...nFileWithModuleNodeResolutionEmitSystem.ts | 14 +++++++++ ...JsonFileWithModuleNodeResolutionEmitUmd.ts | 14 +++++++++ ...leWithModuleNodeResolutionEmitUndefined.ts | 13 +++++++++ 45 files changed, 636 insertions(+) create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.types create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleEmitNone.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleEmitUndefined.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitAmd.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitNone.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitSystem.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUmd.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.ts diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 61365c3df212d..68eafc6b99814 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2864,6 +2864,10 @@ "category": "Error", "code": 5070 }, + "Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'.": { + "category": "Error", + "code": 5071 + }, "Generates a sourcemap for each corresponding '.d.ts' file.": { "category": "Message", diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 5c34e4115a1a3..9a492c1df825e 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -2548,6 +2548,10 @@ namespace ts { if (getEmitModuleResolutionKind(options) !== ModuleResolutionKind.NodeJs) { createDiagnosticForOptionName(Diagnostics.Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy, "resolveJsonModule"); } + // Any emit other than common js is error + else if (options.module !== undefined && options.module !== ModuleKind.CommonJS) { + createDiagnosticForOptionName(Diagnostics.Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs, "resolveJsonModule", "module"); + } } // there has to be common source directory if user specified --outdir || --sourceRoot diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.errors.txt new file mode 100644 index 0000000000000..1a92da0939559 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.errors.txt @@ -0,0 +1,18 @@ +error TS5070: Option '--resolveJsonModule' cannot be specified without 'node' module resolution strategy. +tests/cases/compiler/file1.ts(1,1): error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. +tests/cases/compiler/file1.ts(1,20): error TS2307: Cannot find module './b.json'. + + +!!! error TS5070: Option '--resolveJsonModule' cannot be specified without 'node' module resolution strategy. +==== tests/cases/compiler/file1.ts (2 errors) ==== + import * as b from './b.json'; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + ~~~~~~~~~~ +!!! error TS2307: Cannot find module './b.json'. + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js new file mode 100644 index 0000000000000..a94bdd896dddd --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.js @@ -0,0 +1,14 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleEmitNone.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/file1.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.symbols new file mode 100644 index 0000000000000..27f9d9d811796 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.symbols @@ -0,0 +1,4 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.types b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.types new file mode 100644 index 0000000000000..999e912a291e7 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitNone.types @@ -0,0 +1,4 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : any + diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js new file mode 100644 index 0000000000000..84b0acc7733cb --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.js @@ -0,0 +1,19 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleEmitUndefined.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.types b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleEmitUndefined.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.errors.txt new file mode 100644 index 0000000000000..eab6745285b55 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.errors.txt @@ -0,0 +1,12 @@ +error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. + + +!!! error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +==== tests/cases/compiler/file1.ts (0 errors) ==== + import * as b from './b.json'; + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js new file mode 100644 index 0000000000000..53abd96568028 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitAmd.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] +define(["require", "exports"], function (require, exports) { + "use strict"; + exports.__esModule = true; +}); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitAmd.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.errors.txt new file mode 100644 index 0000000000000..eab6745285b55 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.errors.txt @@ -0,0 +1,12 @@ +error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. + + +!!! error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +==== tests/cases/compiler/file1.ts (0 errors) ==== + import * as b from './b.json'; + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js new file mode 100644 index 0000000000000..12d02801bb242 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.errors.txt new file mode 100644 index 0000000000000..b9c37651205cd --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.errors.txt @@ -0,0 +1,12 @@ +error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. + + +!!! error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +==== tests/cases/compiler/file1.ts (0 errors) ==== + import * as b from './b.json'; + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js new file mode 100644 index 0000000000000..f3bcbc546fee1 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.symbols new file mode 100644 index 0000000000000..9853ac89f51cd --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.types new file mode 100644 index 0000000000000..f10a2fda11f47 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.errors.txt new file mode 100644 index 0000000000000..8a40ac52e9034 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.errors.txt @@ -0,0 +1,15 @@ +error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +tests/cases/compiler/file1.ts(1,1): error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + + +!!! error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +==== tests/cases/compiler/file1.ts (1 errors) ==== + import * as b from './b.json'; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'. + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js new file mode 100644 index 0000000000000..06d357e708983 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.js @@ -0,0 +1,19 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitNone.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitNone.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.errors.txt new file mode 100644 index 0000000000000..eab6745285b55 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.errors.txt @@ -0,0 +1,12 @@ +error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. + + +!!! error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +==== tests/cases/compiler/file1.ts (0 errors) ==== + import * as b from './b.json'; + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js new file mode 100644 index 0000000000000..5174a101848c7 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.js @@ -0,0 +1,26 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitSystem.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] +System.register([], function (exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + return { + setters: [], + execute: function () { + } + }; +}); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitSystem.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.errors.txt b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.errors.txt new file mode 100644 index 0000000000000..eab6745285b55 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.errors.txt @@ -0,0 +1,12 @@ +error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. + + +!!! error TS5071: Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs'. +==== tests/cases/compiler/file1.ts (0 errors) ==== + import * as b from './b.json'; + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js new file mode 100644 index 0000000000000..9aaecbdbef46b --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.js @@ -0,0 +1,29 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUmd.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] +(function (factory) { + if (typeof module === "object" && typeof module.exports === "object") { + var v = factory(require, exports); + if (v !== undefined) module.exports = v; + } + else if (typeof define === "function" && define.amd) { + define(["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + exports.__esModule = true; +}); diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUmd.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js new file mode 100644 index 0000000000000..ce1abb0d4d635 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.js @@ -0,0 +1,19 @@ +//// [tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.ts] //// + +//// [file1.ts] +import * as b from './b.json'; + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [out/b.json] +{ + "a": true, + "b": "hello" +} +//// [out/file1.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.symbols b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.symbols new file mode 100644 index 0000000000000..827f2e674e630 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : Symbol(b, Decl(file1.ts, 0, 6)) + +=== tests/cases/compiler/b.json === +{ + "a": true, +>"a" : Symbol("a", Decl(b.json, 0, 1)) + + "b": "hello" +>"b" : Symbol("b", Decl(b.json, 1, 14)) +} diff --git a/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.types b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.types new file mode 100644 index 0000000000000..9e5cc29d34207 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === +import * as b from './b.json'; +>b : { "a": boolean; "b": string; } + +=== tests/cases/compiler/b.json === +{ +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } + + "a": true, +>"a" : boolean +>true : true + + "b": "hello" +>"b" : string +>"hello" : "hello" +} diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleEmitNone.ts b/tests/cases/compiler/requireOfJsonFileWithModuleEmitNone.ts new file mode 100644 index 0000000000000..d7834a175f4d2 --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleEmitNone.ts @@ -0,0 +1,13 @@ +// @module: none +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleEmitUndefined.ts b/tests/cases/compiler/requireOfJsonFileWithModuleEmitUndefined.ts new file mode 100644 index 0000000000000..c8f71d03e674c --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleEmitUndefined.ts @@ -0,0 +1,12 @@ +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitAmd.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitAmd.ts new file mode 100644 index 0000000000000..2f56f43a75305 --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitAmd.ts @@ -0,0 +1,14 @@ +// @module: amd +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.ts new file mode 100644 index 0000000000000..fc6746a05705a --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEs2015.ts @@ -0,0 +1,14 @@ +// @module: es2015 +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.ts new file mode 100644 index 0000000000000..a42dff430062b --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitEsNext.ts @@ -0,0 +1,14 @@ +// @module: esnext +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitNone.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitNone.ts new file mode 100644 index 0000000000000..efb05bf693e64 --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitNone.ts @@ -0,0 +1,14 @@ +// @module: none +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitSystem.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitSystem.ts new file mode 100644 index 0000000000000..c1aa7182bf6cc --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitSystem.ts @@ -0,0 +1,14 @@ +// @module: system +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUmd.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUmd.ts new file mode 100644 index 0000000000000..dcb91f70897fa --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUmd.ts @@ -0,0 +1,14 @@ +// @module: umd +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.ts b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.ts new file mode 100644 index 0000000000000..901728cd0645f --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithModuleNodeResolutionEmitUndefined.ts @@ -0,0 +1,13 @@ +// @moduleResolution: node +// @outdir: out/ +// @fullEmitPaths: true +// @resolveJsonModule: true + +// @Filename: file1.ts +import * as b from './b.json'; + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file