diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index ff11b09f0fe..ad02d84a35b 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -2710,8 +2710,7 @@ namespace ts { } else { const s = forEachIdentifierInEntityName(e.expression, parent, action); - if (!s || !s.exports) return Debug.fail(); - return action(e.name, s.exports.get(e.name.escapedText), s); + return action(e.name, s && s.exports && s.exports.get(e.name.escapedText), s); } } diff --git a/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.errors.txt b/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.errors.txt new file mode 100644 index 00000000000..11c68e5603f --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.errors.txt @@ -0,0 +1,8 @@ +tests/cases/compiler/a.js(1,9): error TS2339: Property 'a' does not exist on type 'typeof import("tests/cases/compiler/a")'. + + +==== tests/cases/compiler/a.js (1 errors) ==== + exports.a.b.c = 0; + ~ +!!! error TS2339: Property 'a' does not exist on type 'typeof import("tests/cases/compiler/a")'. + \ No newline at end of file diff --git a/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.symbols b/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.symbols new file mode 100644 index 00000000000..06acf3481da --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.symbols @@ -0,0 +1,4 @@ +=== tests/cases/compiler/a.js === +exports.a.b.c = 0; +>exports : Symbol("tests/cases/compiler/a", Decl(a.js, 0, 0)) + diff --git a/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.types b/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.types new file mode 100644 index 00000000000..a30ecf717c3 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindDeepExportsAssignment.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/a.js === +exports.a.b.c = 0; +>exports.a.b.c = 0 : 0 +>exports.a.b.c : any +>exports.a.b : any +>exports.a : any +>exports : typeof import("tests/cases/compiler/a") +>a : any +>b : any +>c : any +>0 : 0 + diff --git a/tests/cases/compiler/jsFileCompilationBindDeepExportsAssignment.ts b/tests/cases/compiler/jsFileCompilationBindDeepExportsAssignment.ts new file mode 100644 index 00000000000..5d3de3e0d2e --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationBindDeepExportsAssignment.ts @@ -0,0 +1,6 @@ +// @allowJs: true +// @noEmit: true +// @checkJs: true +// @filename: a.js + +exports.a.b.c = 0;