Skip to content

Commit

Permalink
Do not report esModuleInterop needed error for json imports
Browse files Browse the repository at this point in the history
Fixes #25400
  • Loading branch information
sheetalkamat committed Jul 5, 2018
1 parent 50ef631 commit cb622b4
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/compiler/checker.ts
Expand Up @@ -2268,7 +2268,7 @@ namespace ts {
function resolveESModuleSymbol(moduleSymbol: Symbol | undefined, referencingLocation: Node, dontResolveAlias: boolean): Symbol | undefined {
const symbol = resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias);
if (!dontResolveAlias && symbol) {
if (!(symbol.flags & (SymbolFlags.Module | SymbolFlags.Variable))) {
if (!(symbol.flags & (SymbolFlags.Module | SymbolFlags.Variable)) && !getDeclarationOfKind(symbol, SyntaxKind.SourceFile)) {
error(referencingLocation, Diagnostics.Module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol!));
return symbol;
}
Expand Down
@@ -0,0 +1,19 @@
//// [tests/cases/compiler/requireOfJsonFileWithoutEsModuleInterop.ts] ////

//// [file1.ts]
import * as test from "./test.json"

//// [test.json]
{
"a": true,
"b": "hello"
}

//// [out/test.json]
{
"a": true,
"b": "hello"
}
//// [out/file1.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
=== tests/cases/compiler/file1.ts ===
import * as test from "./test.json"
>test : Symbol(test, Decl(file1.ts, 0, 6))

=== tests/cases/compiler/test.json ===
{
"a": true,
>"a" : Symbol("a", Decl(test.json, 0, 1))

"b": "hello"
>"b" : Symbol("b", Decl(test.json, 1, 14))
}
@@ -0,0 +1,16 @@
=== tests/cases/compiler/file1.ts ===
import * as test from "./test.json"
>test : { "a": boolean; "b": string; }

=== tests/cases/compiler/test.json ===
{
>{ "a": true, "b": "hello"} : { "a": boolean; "b": string; }

"a": true,
>"a" : boolean
>true : true

"b": "hello"
>"b" : string
>"hello" : "hello"
}
16 changes: 16 additions & 0 deletions tests/cases/compiler/requireOfJsonFileWithoutEsModuleInterop.ts
@@ -0,0 +1,16 @@
// @module: commonjs
// @moduleResolution: node
// @target:es2017
// @strict: true
// @resolveJsonModule: true
// @outdir: out/
// @fullEmitPaths: true

// @Filename: file1.ts
import * as test from "./test.json"

// @Filename: test.json
{
"a": true,
"b": "hello"
}

0 comments on commit cb622b4

Please sign in to comment.