From a1922fd41fb0e48a5fc7df91068d29e7f51d481d Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 17 Jan 2017 13:51:00 -0800 Subject: [PATCH] More tests and also do not add index signature for json module --- src/compiler/checker.ts | 2 +- src/compiler/parser.ts | 4 +- src/compiler/types.ts | 1 + src/compiler/utilities.ts | 4 ++ .../reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + .../reference/requireOfJsonFile.types | 12 +++--- .../requireOfJsonFileWithAmd.errors.txt | 22 +++++++++++ .../reference/requireOfJsonFileWithAmd.js | 27 ++++++++++++++ .../requireOfJsonFileWithAmd.symbols | 24 ++++++++++++ .../reference/requireOfJsonFileWithAmd.types | 33 +++++++++++++++++ .../requireOfJsonFileWithEmptyObject.js | 25 +++++++++++++ .../requireOfJsonFileWithEmptyObject.symbols | 23 ++++++++++++ .../requireOfJsonFileWithEmptyObject.types | 24 ++++++++++++ ...onFileWithEmptyObjectWithErrors.errors.txt | 23 ++++++++++++ ...uireOfJsonFileWithEmptyObjectWithErrors.js | 27 ++++++++++++++ ...fJsonFileWithEmptyObjectWithErrors.symbols | 28 ++++++++++++++ ...eOfJsonFileWithEmptyObjectWithErrors.types | 37 +++++++++++++++++++ .../requireOfJsonFileWithNoContent.errors.txt | 22 +++++++++++ .../requireOfJsonFileWithNoContent.js | 25 +++++++++++++ .../requireOfJsonFileWithNoContent.symbols | 27 ++++++++++++++ .../requireOfJsonFileWithNoContent.types | 36 ++++++++++++++++++ .../compiler/requireOfJsonFileWithAmd.ts | 17 +++++++++ .../requireOfJsonFileWithEmptyObject.ts | 14 +++++++ ...uireOfJsonFileWithEmptyObjectWithErrors.ts | 15 ++++++++ .../requireOfJsonFileWithNoContent.ts | 13 +++++++ 26 files changed, 479 insertions(+), 8 deletions(-) create mode 100644 tests/baselines/reference/requireOfJsonFileWithAmd.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithAmd.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithAmd.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithAmd.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObject.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObject.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObject.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.types create mode 100644 tests/baselines/reference/requireOfJsonFileWithNoContent.errors.txt create mode 100644 tests/baselines/reference/requireOfJsonFileWithNoContent.js create mode 100644 tests/baselines/reference/requireOfJsonFileWithNoContent.symbols create mode 100644 tests/baselines/reference/requireOfJsonFileWithNoContent.types create mode 100644 tests/cases/compiler/requireOfJsonFileWithAmd.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithEmptyObject.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithEmptyObjectWithErrors.ts create mode 100644 tests/cases/compiler/requireOfJsonFileWithNoContent.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ba53d2aa7aa..b943135b006 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14882,7 +14882,7 @@ namespace ts { const contextualType = getApparentTypeOfContextualType(node); const contextualTypeHasPattern = contextualType && contextualType.pattern && (contextualType.pattern.kind === SyntaxKind.ObjectBindingPattern || contextualType.pattern.kind === SyntaxKind.ObjectLiteralExpression); - const isJSObjectLiteral = !contextualType && isInJavaScriptFile(node); + const isJSObjectLiteral = !contextualType && (isInJavaScriptFile(node) && !isInJsonFile(node)); let typeFlags: TypeFlags = 0; let patternWithComputedProperties = false; let hasComputedStringProperty = false; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 9eaab774a1b..5ce69b1ff4b 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -747,9 +747,11 @@ namespace ts { switch (scriptKind) { case ScriptKind.JS: case ScriptKind.JSX: - case ScriptKind.JSON: contextFlags = NodeFlags.JavaScriptFile; break; + case ScriptKind.JSON: + contextFlags = NodeFlags.JavaScriptFile | NodeFlags.JsonFile; + break; default: contextFlags = NodeFlags.None; break; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index d550bf9704f..80adbc1fbc0 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -492,6 +492,7 @@ namespace ts { JSDoc = 1 << 20, // If node was parsed inside jsdoc /* @internal */ Ambient = 1 << 21, // If node was inside an ambient context -- a declaration file, or inside something with the `declare` modifier. /* @internal */ InWithStatement = 1 << 22, // If any ancestor of node was the `statement` of a WithStatement (not the `expression`) + JsonFile = 1 << 23, // If node was parsed in a Json BlockScoped = Let | Const, diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index e0f20cdda7d..63a02d8d7b8 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1432,6 +1432,10 @@ namespace ts { return node && !!(node.flags & NodeFlags.JavaScriptFile); } + export function isInJsonFile(node: Node | undefined): boolean { + return node && !!(node.flags & NodeFlags.JsonFile); + } + export function isInJSDoc(node: Node | undefined): boolean { return node && !!(node.flags & NodeFlags.JSDoc); } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 29ed483e632..1abd2401a03 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -413,6 +413,7 @@ declare namespace ts { ThisNodeOrAnySubNodesHasError = 131072, HasAggregatedChildData = 262144, JSDoc = 1048576, + JsonFile = 8388608, BlockScoped = 3, ReachabilityCheckFlags = 384, ReachabilityAndEmitFlags = 1408, diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 430cfb9c444..d766ef8a5e6 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -413,6 +413,7 @@ declare namespace ts { ThisNodeOrAnySubNodesHasError = 131072, HasAggregatedChildData = 262144, JSDoc = 1048576, + JsonFile = 8388608, BlockScoped = 3, ReachabilityCheckFlags = 384, ReachabilityAndEmitFlags = 1408, diff --git a/tests/baselines/reference/requireOfJsonFile.types b/tests/baselines/reference/requireOfJsonFile.types index 40bb6d0f65d..7911e2eb1ab 100644 --- a/tests/baselines/reference/requireOfJsonFile.types +++ b/tests/baselines/reference/requireOfJsonFile.types @@ -1,15 +1,15 @@ === tests/cases/compiler/file1.ts === import b1 = require('./b'); ->b1 : { [x: string]: any; "a": boolean; "b": string; } +>b1 : { "a": boolean; "b": string; } let x = b1.a; >x : boolean >b1.a : boolean ->b1 : { [x: string]: any; "a": boolean; "b": string; } +>b1 : { "a": boolean; "b": string; } >a : boolean import b2 = require('./b.json'); ->b2 : { [x: string]: any; "a": boolean; "b": string; } +>b2 : { "a": boolean; "b": string; } if (x) { >x : boolean @@ -17,7 +17,7 @@ if (x) { let b = b2.b; >b : string >b2.b : string ->b2 : { [x: string]: any; "a": boolean; "b": string; } +>b2 : { "a": boolean; "b": string; } >b : string x = (b1.b === b); @@ -26,14 +26,14 @@ if (x) { >(b1.b === b) : boolean >b1.b === b : boolean >b1.b : string ->b1 : { [x: string]: any; "a": boolean; "b": string; } +>b1 : { "a": boolean; "b": string; } >b : string >b : string } === tests/cases/compiler/b.json === { ->{ "a": true, "b": "hello"} : { [x: string]: any; "a": boolean; "b": string; } +>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; } "a": true, >"a" : boolean diff --git a/tests/baselines/reference/requireOfJsonFileWithAmd.errors.txt b/tests/baselines/reference/requireOfJsonFileWithAmd.errors.txt new file mode 100644 index 00000000000..0a9654750e1 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithAmd.errors.txt @@ -0,0 +1,22 @@ +tests/cases/compiler/file1.ts(1,21): error TS2307: Cannot find module './b'. +tests/cases/compiler/file1.ts(3,21): error TS2307: Cannot find module './b.json'. + + +==== tests/cases/compiler/file1.ts (2 errors) ==== + import b1 = require('./b'); + ~~~~~ +!!! error TS2307: Cannot find module './b'. + let x = b1.a; + import b2 = require('./b.json'); + ~~~~~~~~~~ +!!! error TS2307: Cannot find module './b.json'. + if (x) { + let b = b2.b; + x = (b1.b === b); + } + +==== tests/cases/compiler/b.json (0 errors) ==== + { + "a": true, + "b": "hello" + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithAmd.js b/tests/baselines/reference/requireOfJsonFileWithAmd.js new file mode 100644 index 00000000000..ebc5a2d42e7 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithAmd.js @@ -0,0 +1,27 @@ +//// [tests/cases/compiler/requireOfJsonFileWithAmd.ts] //// + +//// [file1.ts] +import b1 = require('./b'); +let x = b1.a; +import b2 = require('./b.json'); +if (x) { + let b = b2.b; + x = (b1.b === b); +} + +//// [b.json] +{ + "a": true, + "b": "hello" +} + +//// [file1.js] +define(["require", "exports", "./b", "./b.json"], function (require, exports, b1, b2) { + "use strict"; + exports.__esModule = true; + var x = b1.a; + if (x) { + var b = b2.b; + x = (b1.b === b); + } +}); diff --git a/tests/baselines/reference/requireOfJsonFileWithAmd.symbols b/tests/baselines/reference/requireOfJsonFileWithAmd.symbols new file mode 100644 index 00000000000..1729461ef07 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithAmd.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +let x = b1.a; +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +import b2 = require('./b.json'); +>b2 : Symbol(b2, Decl(file1.ts, 1, 13)) + +if (x) { +>x : Symbol(x, Decl(file1.ts, 1, 3)) + + let b = b2.b; +>b : Symbol(b, Decl(file1.ts, 4, 7)) +>b2 : Symbol(b2, Decl(file1.ts, 1, 13)) + + x = (b1.b === b); +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) +>b : Symbol(b, Decl(file1.ts, 4, 7)) +} + diff --git a/tests/baselines/reference/requireOfJsonFileWithAmd.types b/tests/baselines/reference/requireOfJsonFileWithAmd.types new file mode 100644 index 00000000000..7984743550d --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithAmd.types @@ -0,0 +1,33 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : any + +let x = b1.a; +>x : any +>b1.a : any +>b1 : any +>a : any + +import b2 = require('./b.json'); +>b2 : any + +if (x) { +>x : any + + let b = b2.b; +>b : any +>b2.b : any +>b2 : any +>b : any + + x = (b1.b === b); +>x = (b1.b === b) : boolean +>x : any +>(b1.b === b) : boolean +>b1.b === b : boolean +>b1.b : any +>b1 : any +>b : any +>b : any +} + diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObject.js b/tests/baselines/reference/requireOfJsonFileWithEmptyObject.js new file mode 100644 index 00000000000..12c912195d4 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObject.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/requireOfJsonFileWithEmptyObject.ts] //// + +//// [file1.ts] +import b1 = require('./b'); +let x = b1; +import b2 = require('./b.json'); +if (x) { + x = b2; +} + +//// [b.json] +{ +} + +//// [b.json] +{} +//// [file1.js] +"use strict"; +exports.__esModule = true; +var b1 = require("./b"); +var x = b1; +var b2 = require("./b.json"); +if (x) { + x = b2; +} diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObject.symbols b/tests/baselines/reference/requireOfJsonFileWithEmptyObject.symbols new file mode 100644 index 00000000000..4edf64ef720 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObject.symbols @@ -0,0 +1,23 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +let x = b1; +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +import b2 = require('./b.json'); +>b2 : Symbol(b2, Decl(file1.ts, 1, 11)) + +if (x) { +>x : Symbol(x, Decl(file1.ts, 1, 3)) + + x = b2; +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b2 : Symbol(b2, Decl(file1.ts, 1, 11)) +} + +=== tests/cases/compiler/b.json === +{ +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObject.types b/tests/baselines/reference/requireOfJsonFileWithEmptyObject.types new file mode 100644 index 00000000000..6a8bad1793b --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObject.types @@ -0,0 +1,24 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : {} + +let x = b1; +>x : {} +>b1 : {} + +import b2 = require('./b.json'); +>b2 : {} + +if (x) { +>x : {} + + x = b2; +>x = b2 : {} +>x : {} +>b2 : {} +} + +=== tests/cases/compiler/b.json === +{ +>{} : {} +} diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.errors.txt b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.errors.txt new file mode 100644 index 00000000000..258c4dd60b0 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.errors.txt @@ -0,0 +1,23 @@ +tests/cases/compiler/file1.ts(2,12): error TS2339: Property 'a' does not exist on type '{}'. +tests/cases/compiler/file1.ts(5,16): error TS2339: Property 'b' does not exist on type '{}'. +tests/cases/compiler/file1.ts(6,13): error TS2339: Property 'b' does not exist on type '{}'. + + +==== tests/cases/compiler/file1.ts (3 errors) ==== + import b1 = require('./b'); + let x = b1.a; + ~ +!!! error TS2339: Property 'a' does not exist on type '{}'. + import b2 = require('./b.json'); + if (x) { + let b = b2.b; + ~ +!!! error TS2339: Property 'b' does not exist on type '{}'. + x = (b1.b === b); + ~ +!!! error TS2339: Property 'b' does not exist on type '{}'. + } + +==== tests/cases/compiler/b.json (0 errors) ==== + { + } \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.js b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.js new file mode 100644 index 00000000000..996f0d4d2db --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.js @@ -0,0 +1,27 @@ +//// [tests/cases/compiler/requireOfJsonFileWithEmptyObjectWithErrors.ts] //// + +//// [file1.ts] +import b1 = require('./b'); +let x = b1.a; +import b2 = require('./b.json'); +if (x) { + let b = b2.b; + x = (b1.b === b); +} + +//// [b.json] +{ +} + +//// [b.json] +{} +//// [file1.js] +"use strict"; +exports.__esModule = true; +var b1 = require("./b"); +var x = b1.a; +var b2 = require("./b.json"); +if (x) { + var b = b2.b; + x = (b1.b === b); +} diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.symbols b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.symbols new file mode 100644 index 00000000000..b9edfe487ad --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.symbols @@ -0,0 +1,28 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +let x = b1.a; +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +import b2 = require('./b.json'); +>b2 : Symbol(b2, Decl(file1.ts, 1, 13)) + +if (x) { +>x : Symbol(x, Decl(file1.ts, 1, 3)) + + let b = b2.b; +>b : Symbol(b, Decl(file1.ts, 4, 7)) +>b2 : Symbol(b2, Decl(file1.ts, 1, 13)) + + x = (b1.b === b); +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) +>b : Symbol(b, Decl(file1.ts, 4, 7)) +} + +=== tests/cases/compiler/b.json === +{ +No type information for this code.} +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.types b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.types new file mode 100644 index 00000000000..510acba9357 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithEmptyObjectWithErrors.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : {} + +let x = b1.a; +>x : any +>b1.a : any +>b1 : {} +>a : any + +import b2 = require('./b.json'); +>b2 : {} + +if (x) { +>x : any + + let b = b2.b; +>b : any +>b2.b : any +>b2 : {} +>b : any + + x = (b1.b === b); +>x = (b1.b === b) : boolean +>x : any +>(b1.b === b) : boolean +>b1.b === b : boolean +>b1.b : any +>b1 : {} +>b : any +>b : any +} + +=== tests/cases/compiler/b.json === +{ +>{} : {} +} diff --git a/tests/baselines/reference/requireOfJsonFileWithNoContent.errors.txt b/tests/baselines/reference/requireOfJsonFileWithNoContent.errors.txt new file mode 100644 index 00000000000..c1d050bdaad --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithNoContent.errors.txt @@ -0,0 +1,22 @@ +tests/cases/compiler/file1.ts(2,12): error TS2339: Property 'a' does not exist on type '{}'. +tests/cases/compiler/file1.ts(5,16): error TS2339: Property 'b' does not exist on type '{}'. +tests/cases/compiler/file1.ts(6,13): error TS2339: Property 'b' does not exist on type '{}'. + + +==== tests/cases/compiler/file1.ts (3 errors) ==== + import b1 = require('./b'); + let x = b1.a; + ~ +!!! error TS2339: Property 'a' does not exist on type '{}'. + import b2 = require('./b.json'); + if (x) { + let b = b2.b; + ~ +!!! error TS2339: Property 'b' does not exist on type '{}'. + x = (b1.b === b); + ~ +!!! error TS2339: Property 'b' does not exist on type '{}'. + } + +==== tests/cases/compiler/b.json (0 errors) ==== + \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithNoContent.js b/tests/baselines/reference/requireOfJsonFileWithNoContent.js new file mode 100644 index 00000000000..2deed5a2d43 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithNoContent.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/requireOfJsonFileWithNoContent.ts] //// + +//// [file1.ts] +import b1 = require('./b'); +let x = b1.a; +import b2 = require('./b.json'); +if (x) { + let b = b2.b; + x = (b1.b === b); +} + +//// [b.json] + + +//// [b.json] +//// [file1.js] +"use strict"; +exports.__esModule = true; +var b1 = require("./b"); +var x = b1.a; +var b2 = require("./b.json"); +if (x) { + var b = b2.b; + x = (b1.b === b); +} diff --git a/tests/baselines/reference/requireOfJsonFileWithNoContent.symbols b/tests/baselines/reference/requireOfJsonFileWithNoContent.symbols new file mode 100644 index 00000000000..6a7a1ebbc51 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithNoContent.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +let x = b1.a; +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) + +import b2 = require('./b.json'); +>b2 : Symbol(b2, Decl(file1.ts, 1, 13)) + +if (x) { +>x : Symbol(x, Decl(file1.ts, 1, 3)) + + let b = b2.b; +>b : Symbol(b, Decl(file1.ts, 4, 7)) +>b2 : Symbol(b2, Decl(file1.ts, 1, 13)) + + x = (b1.b === b); +>x : Symbol(x, Decl(file1.ts, 1, 3)) +>b1 : Symbol(b1, Decl(file1.ts, 0, 0)) +>b : Symbol(b, Decl(file1.ts, 4, 7)) +} + +=== tests/cases/compiler/b.json === + +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/requireOfJsonFileWithNoContent.types b/tests/baselines/reference/requireOfJsonFileWithNoContent.types new file mode 100644 index 00000000000..5ead1cfc834 --- /dev/null +++ b/tests/baselines/reference/requireOfJsonFileWithNoContent.types @@ -0,0 +1,36 @@ +=== tests/cases/compiler/file1.ts === +import b1 = require('./b'); +>b1 : {} + +let x = b1.a; +>x : any +>b1.a : any +>b1 : {} +>a : any + +import b2 = require('./b.json'); +>b2 : {} + +if (x) { +>x : any + + let b = b2.b; +>b : any +>b2.b : any +>b2 : {} +>b : any + + x = (b1.b === b); +>x = (b1.b === b) : boolean +>x : any +>(b1.b === b) : boolean +>b1.b === b : boolean +>b1.b : any +>b1 : {} +>b : any +>b : any +} + +=== tests/cases/compiler/b.json === + +No type information for this code. \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithAmd.ts b/tests/cases/compiler/requireOfJsonFileWithAmd.ts new file mode 100644 index 00000000000..682874fe5c0 --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithAmd.ts @@ -0,0 +1,17 @@ +// @module: amd +// @outdir: out/ + +// @Filename: file1.ts +import b1 = require('./b'); +let x = b1.a; +import b2 = require('./b.json'); +if (x) { + let b = b2.b; + x = (b1.b === b); +} + +// @Filename: b.json +{ + "a": true, + "b": "hello" +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithEmptyObject.ts b/tests/cases/compiler/requireOfJsonFileWithEmptyObject.ts new file mode 100644 index 00000000000..4ec163b56e5 --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithEmptyObject.ts @@ -0,0 +1,14 @@ +// @module: commonjs +// @outdir: out/ + +// @Filename: file1.ts +import b1 = require('./b'); +let x = b1; +import b2 = require('./b.json'); +if (x) { + x = b2; +} + +// @Filename: b.json +{ +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithEmptyObjectWithErrors.ts b/tests/cases/compiler/requireOfJsonFileWithEmptyObjectWithErrors.ts new file mode 100644 index 00000000000..4e1a21f938e --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithEmptyObjectWithErrors.ts @@ -0,0 +1,15 @@ +// @module: commonjs +// @outdir: out/ + +// @Filename: file1.ts +import b1 = require('./b'); +let x = b1.a; +import b2 = require('./b.json'); +if (x) { + let b = b2.b; + x = (b1.b === b); +} + +// @Filename: b.json +{ +} \ No newline at end of file diff --git a/tests/cases/compiler/requireOfJsonFileWithNoContent.ts b/tests/cases/compiler/requireOfJsonFileWithNoContent.ts new file mode 100644 index 00000000000..c0d94bb269a --- /dev/null +++ b/tests/cases/compiler/requireOfJsonFileWithNoContent.ts @@ -0,0 +1,13 @@ +// @module: commonjs +// @outdir: out/ + +// @Filename: file1.ts +import b1 = require('./b'); +let x = b1.a; +import b2 = require('./b.json'); +if (x) { + let b = b2.b; + x = (b1.b === b); +} + +// @Filename: b.json