Skip to content

Commit 86d106a

Browse files
committed
PR feedback
1 parent 75466e6 commit 86d106a

File tree

7 files changed

+46
-109
lines changed

7 files changed

+46
-109
lines changed

src/compiler/emitter.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3012,17 +3012,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
30123012
return result;
30133013
}
30143014

3015-
function emitEs6ExportDefaultCompat() {
3016-
if (compilerOptions.module === ModuleKind.CommonJS || compilerOptions.module === ModuleKind.AMD || compilerOptions.module === ModuleKind.UMD) {
3017-
if (!hasProperty(currentSourceFile.identifiers, "___esModule")) {
3018-
if (languageVersion >= ScriptTarget.ES5) {
3019-
// default value of configurable, enumerable, writable are `false`.
3020-
write("Object.defineProperty(exports, \"__esModule\", { value: true });");
3021-
writeLine();
3022-
}
3023-
else {
3024-
write("exports.__esModule = true;");
3025-
writeLine();
3015+
function emitEs6ExportDefaultCompat(node: Node) {
3016+
if (node.parent.kind === SyntaxKind.SourceFile && (!!(node.flags & NodeFlags.Default) || node.kind === SyntaxKind.ExportAssignment)) {
3017+
// only allow export default at a source file level
3018+
if (compilerOptions.module === ModuleKind.CommonJS || compilerOptions.module === ModuleKind.AMD || compilerOptions.module === ModuleKind.UMD) {
3019+
if (!currentSourceFile.symbol.exports["___esModule"]) {
3020+
if (languageVersion === ScriptTarget.ES5) {
3021+
// default value of configurable, enumerable, writable are `false`.
3022+
write("Object.defineProperty(exports, \"__esModule\", { value: true });");
3023+
writeLine();
3024+
}
3025+
else if (languageVersion === ScriptTarget.ES3) {
3026+
write("exports.__esModule = true;");
3027+
writeLine();
3028+
}
30263029
}
30273030
}
30283031
}
@@ -3050,7 +3053,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
30503053
}
30513054
else {
30523055
if (node.flags & NodeFlags.Default) {
3053-
emitEs6ExportDefaultCompat();
3056+
emitEs6ExportDefaultCompat(node);
30543057
if (languageVersion === ScriptTarget.ES3) {
30553058
write("exports[\"default\"]");
30563059
}
@@ -5547,7 +5550,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
55475550
write(")");
55485551
}
55495552
else {
5550-
emitEs6ExportDefaultCompat();
5553+
emitEs6ExportDefaultCompat(node);
55515554
emitContainingModuleName(node);
55525555
if (languageVersion === ScriptTarget.ES3) {
55535556
write("[\"default\"] = ");
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//// [es5-commonjs6.ts]
2+
3+
export default "test";
4+
var __esModule = 1;
5+
6+
7+
//// [es5-commonjs6.js]
8+
Object.defineProperty(exports, "__esModule", { value: true });
9+
exports.default = "test";
10+
var __esModule = 1;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
=== tests/cases/compiler/es5-commonjs6.ts ===
2+
3+
export default "test";
4+
var __esModule = 1;
5+
>__esModule : Symbol(__esModule, Decl(es5-commonjs6.ts, 2, 3))
6+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
=== tests/cases/compiler/es5-commonjs6.ts ===
2+
3+
export default "test";
4+
var __esModule = 1;
5+
>__esModule : number
6+
>1 : number
7+

tests/baselines/reference/tsxAttributeResolution9.symbols

Lines changed: 0 additions & 47 deletions
This file was deleted.

tests/baselines/reference/tsxAttributeResolution9.types

Lines changed: 0 additions & 49 deletions
This file was deleted.

tests/cases/compiler/es5-commonjs6.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// @target: ES5
2+
// @sourcemap: false
3+
// @declaration: false
4+
// @module: commonjs
5+
6+
export default "test";
7+
var __esModule = 1;

0 commit comments

Comments
 (0)