Merge pull request #25457 from Microsoft/resolveJsonModuleInterop
Do not report esModuleInterop needed error for json imports
This commit is contained in:
commit
2059c36afa
5 changed files with 64 additions and 1 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
|
@ -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"
|
||||
}
|
Loading…
Reference in a new issue