Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 22 additions & 27 deletions src/compiler/emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3628,12 +3628,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
// only allow export default at a source file level
if (modulekind === ModuleKind.CommonJS || modulekind === ModuleKind.AMD || modulekind === ModuleKind.UMD) {
if (!isEs6Module) {
if (languageVersion === ScriptTarget.ES5) {
if (languageVersion !== ScriptTarget.ES3) {
// default value of configurable, enumerable, writable are `false`.
write("Object.defineProperty(exports, \"__esModule\", { value: true });");
writeLine();
}
else if (languageVersion === ScriptTarget.ES3) {
else {
write("exports.__esModule = true;");
writeLine();
}
Expand Down Expand Up @@ -5171,36 +5171,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
if (!(node.flags & NodeFlags.Export)) {
return;
}
// If this is an exported class, but not on the top level (i.e. on an internal
// module), export it
if (node.flags & NodeFlags.Default) {
// if this is a top level default export of decorated class, write the export after the declaration.
writeLine();
if (thisNodeIsDecorated && modulekind === ModuleKind.ES6) {
write("export default ");
emitDeclarationName(node);
write(";");
}
else if (modulekind === ModuleKind.System) {
write(`${exportFunctionForFile}("default", `);
emitDeclarationName(node);
write(");");
if (modulekind !== ModuleKind.ES6) {
emitExportMemberAssignment(node as ClassDeclaration);
}
else {
// If this is an exported class, but not on the top level (i.e. on an internal
// module), export it
if (node.flags & NodeFlags.Default) {
// if this is a top level default export of decorated class, write the export after the declaration.
if (thisNodeIsDecorated) {
writeLine();
write("export default ");
emitDeclarationName(node);
write(";");
}
}
else if (modulekind !== ModuleKind.ES6) {
write(`exports.default = `);
else if (node.parent.kind !== SyntaxKind.SourceFile) {
writeLine();
emitStart(node);
emitModuleMemberName(node);
write(" = ");
emitDeclarationName(node);
emitEnd(node);
write(";");
}
}
else if (node.parent.kind !== SyntaxKind.SourceFile || (modulekind !== ModuleKind.ES6 && !(node.flags & NodeFlags.Default))) {
writeLine();
emitStart(node);
emitModuleMemberName(node);
write(" = ");
emitDeclarationName(node);
emitEnd(node);
write(";");
}
}

function emitClassLikeDeclarationBelowES6(node: ClassLikeDeclaration) {
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/anonymousDefaultExportsAmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@ define(["require", "exports"], function (require, exports) {
"use strict";
class default_1 {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
});
//// [b.js]
define(["require", "exports"], function (require, exports) {
"use strict";
function default_1() { }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
});
2 changes: 2 additions & 0 deletions tests/baselines/reference/anonymousDefaultExportsCommonjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ export default function() {}
"use strict";
class default_1 {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
//// [b.js]
"use strict";
function default_1() { }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
2 changes: 2 additions & 0 deletions tests/baselines/reference/anonymousDefaultExportsUmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export default function() {}
"use strict";
class default_1 {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
});
//// [b.js]
Expand All @@ -31,5 +32,6 @@ export default function() {}
})(function (require, exports) {
"use strict";
function default_1() { }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
});
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ define(["require", "exports"], function (require, exports) {
Foo = __decorate([
decorator
], Foo);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
});
//// [b.js]
Expand All @@ -45,5 +46,6 @@ define(["require", "exports"], function (require, exports) {
default_1 = __decorate([
decorator
], default_1);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
});
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ let Foo = class {
Foo = __decorate([
decorator
], Foo);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
//// [b.js]
"use strict";
Expand All @@ -42,4 +43,5 @@ let default_1 = class {
default_1 = __decorate([
decorator
], default_1);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
Foo = __decorate([
decorator
], Foo);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
});
//// [b.js]
Expand All @@ -59,5 +60,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
default_1 = __decorate([
decorator
], default_1);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
});
2 changes: 2 additions & 0 deletions tests/baselines/reference/defaultExportsGetExportedAmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ define(["require", "exports"], function (require, exports) {
"use strict";
class Foo {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
});
//// [b.js]
define(["require", "exports"], function (require, exports) {
"use strict";
function foo() { }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = foo;
});
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ export default function foo() {}
"use strict";
class Foo {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
//// [b.js]
"use strict";
function foo() { }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = foo;
2 changes: 2 additions & 0 deletions tests/baselines/reference/defaultExportsGetExportedUmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export default function foo() {}
"use strict";
class Foo {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
});
//// [b.js]
Expand All @@ -32,5 +33,6 @@ export default function foo() {}
})(function (require, exports) {
"use strict";
function foo() { }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = foo;
});
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ var x1: number = m;
exports.a = 10;
exports.x = exports.a;
exports.m = exports.a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {};
//// [es6ImportDefaultBindingFollowedWithNamedImport_1.js]
"use strict";
Expand Down
1 change: 1 addition & 0 deletions tests/baselines/reference/exportsAndImports4-es6.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export { a, b, c, d, e1, e2, f1, f2 };

//// [t1.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = "hello";
//// [t3.js]
"use strict";
Expand Down
2 changes: 2 additions & 0 deletions tests/baselines/reference/outFilerootDirModuleNamesAmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ export default function foo() { new Foo(); }
define("b", ["require", "exports", "a"], function (require, exports, a_1) {
"use strict";
function foo() { new a_1.default(); }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = foo;
});
define("a", ["require", "exports", "b"], function (require, exports, b_1) {
"use strict";
class Foo {
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
b_1.default();
});