diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a000bf1f7a7..a66a7edcf18 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2344,7 +2344,7 @@ namespace ts { } function getCommonJsExportEquals(exported: Symbol | undefined, moduleSymbol: Symbol): Symbol | undefined { - if (!exported || moduleSymbol.exports!.size === 1) { + if (!exported || exported === unknownSymbol || moduleSymbol.exports!.size === 1) { return exported; } const merged = cloneSymbol(exported); diff --git a/tests/baselines/reference/moduleExportAliasUnknown.errors.txt b/tests/baselines/reference/moduleExportAliasUnknown.errors.txt new file mode 100644 index 00000000000..83d04dfefb7 --- /dev/null +++ b/tests/baselines/reference/moduleExportAliasUnknown.errors.txt @@ -0,0 +1,12 @@ +tests/cases/conformance/salsa/bug27025.js(1,25): error TS2339: Property 'nonprop' does not exist on type 'Window'. +tests/cases/conformance/salsa/bug27025.js(2,15): error TS2304: Cannot find name 'bar'. + + +==== tests/cases/conformance/salsa/bug27025.js (2 errors) ==== + module.exports = window.nonprop; + ~~~~~~~ +!!! error TS2339: Property 'nonprop' does not exist on type 'Window'. + exports.foo = bar; + ~~~ +!!! error TS2304: Cannot find name 'bar'. + \ No newline at end of file diff --git a/tests/baselines/reference/moduleExportAliasUnknown.symbols b/tests/baselines/reference/moduleExportAliasUnknown.symbols new file mode 100644 index 00000000000..2913a704e10 --- /dev/null +++ b/tests/baselines/reference/moduleExportAliasUnknown.symbols @@ -0,0 +1,11 @@ +=== tests/cases/conformance/salsa/bug27025.js === +module.exports = window.nonprop; +>module.exports : Symbol("tests/cases/conformance/salsa/bug27025", Decl(bug27025.js, 0, 0)) +>module : Symbol(export=, Decl(bug27025.js, 0, 0)) +>exports : Symbol(export=, Decl(bug27025.js, 0, 0)) +>window : Symbol(window, Decl(lib.dom.d.ts, --, --)) + +exports.foo = bar; +>exports : Symbol(foo, Decl(bug27025.js, 0, 32)) +>foo : Symbol(foo, Decl(bug27025.js, 0, 32)) + diff --git a/tests/baselines/reference/moduleExportAliasUnknown.types b/tests/baselines/reference/moduleExportAliasUnknown.types new file mode 100644 index 00000000000..60fae1456d1 --- /dev/null +++ b/tests/baselines/reference/moduleExportAliasUnknown.types @@ -0,0 +1,17 @@ +=== tests/cases/conformance/salsa/bug27025.js === +module.exports = window.nonprop; +>module.exports = window.nonprop : any +>module.exports : any +>module : { "tests/cases/conformance/salsa/bug27025": any; } +>exports : any +>window.nonprop : any +>window : Window +>nonprop : any + +exports.foo = bar; +>exports.foo = bar : any +>exports.foo : any +>exports : any +>foo : any +>bar : any + diff --git a/tests/cases/conformance/salsa/moduleExportAliasUnknown.ts b/tests/cases/conformance/salsa/moduleExportAliasUnknown.ts new file mode 100644 index 00000000000..f2fdb384e61 --- /dev/null +++ b/tests/cases/conformance/salsa/moduleExportAliasUnknown.ts @@ -0,0 +1,6 @@ +// @allowJs: true +// @noEmit: true +// @checkJs: true +// @Filename: bug27025.js +module.exports = window.nonprop; +exports.foo = bar;