Emit es6 export ModuleDeclaration
Conflicts: src/compiler/emitter.ts tests/baselines/reference/es6ExportAll.js tests/baselines/reference/es6ExportClauseWithoutModuleSpecifier.js
This commit is contained in:
parent
05932fdddf
commit
b9f63a85b1
|
@ -4198,6 +4198,12 @@ module ts {
|
|||
generatedBlockScopeNames[variableId] = generatedName;
|
||||
}
|
||||
|
||||
function isES6ModuleMemberDeclaration(node: Node) {
|
||||
return !!(node.flags & NodeFlags.Export) &&
|
||||
languageVersion >= ScriptTarget.ES6 &&
|
||||
node.parent.kind === SyntaxKind.SourceFile;
|
||||
}
|
||||
|
||||
function emitVariableStatement(node: VariableStatement) {
|
||||
if (!(node.flags & NodeFlags.Export)) {
|
||||
emitStartOfVariableDeclarationList(node.declarationList);
|
||||
|
@ -4979,7 +4985,8 @@ module ts {
|
|||
scopeEmitEnd();
|
||||
}
|
||||
write(")(");
|
||||
if (node.flags & NodeFlags.Export) {
|
||||
// write moduleDecl = containingModule.m only if it is not exported es6 module member
|
||||
if ((node.flags & NodeFlags.Export) && !isES6ModuleMemberDeclaration(node)) {
|
||||
emit(node.name);
|
||||
write(" = ");
|
||||
}
|
||||
|
@ -4988,7 +4995,15 @@ module ts {
|
|||
emitModuleMemberName(node);
|
||||
write(" = {}));");
|
||||
emitEnd(node);
|
||||
if (languageVersion < ScriptTarget.ES6 && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) {
|
||||
if (isES6ModuleMemberDeclaration(node)) {
|
||||
writeLine();
|
||||
emitStart(node);
|
||||
write("export { ");
|
||||
emit(node.name);
|
||||
write(" };");
|
||||
emitEnd(node);
|
||||
}
|
||||
else if (languageVersion < ScriptTarget.ES6 && node.name.kind === SyntaxKind.Identifier && node.parent === currentSourceFile) {
|
||||
emitExportMemberAssignments(<Identifier>node.name);
|
||||
}
|
||||
}
|
||||
|
|
49
tests/baselines/reference/es6ExportAll.js
Normal file
49
tests/baselines/reference/es6ExportAll.js
Normal file
|
@ -0,0 +1,49 @@
|
|||
//// [tests/cases/compiler/es6ExportAll.ts] ////
|
||||
|
||||
//// [server.ts]
|
||||
|
||||
export class c {
|
||||
}
|
||||
export interface i {
|
||||
}
|
||||
export module m {
|
||||
export var x = 10;
|
||||
}
|
||||
export var x = 10;
|
||||
export module uninstantiated {
|
||||
}
|
||||
|
||||
//// [client.ts]
|
||||
export * from "server";
|
||||
|
||||
//// [server.js]
|
||||
var c = (function () {
|
||||
function c() {
|
||||
}
|
||||
return c;
|
||||
})();
|
||||
c = c;
|
||||
var m;
|
||||
(function (m) {
|
||||
m.x = 10;
|
||||
})(m || (m = {}));
|
||||
export { m };
|
||||
export var x = 10;
|
||||
//// [client.js]
|
||||
var _server = require("server");
|
||||
for (var _a in _server) if (!exports.hasOwnProperty(_a)) exports[_a] = _server[_a];
|
||||
|
||||
|
||||
//// [server.d.ts]
|
||||
export declare class c {
|
||||
}
|
||||
export interface i {
|
||||
}
|
||||
export declare module m {
|
||||
var x: number;
|
||||
}
|
||||
export declare var x: number;
|
||||
export declare module uninstantiated {
|
||||
}
|
||||
//// [client.d.ts]
|
||||
export * from "server";
|
|
@ -0,0 +1,66 @@
|
|||
//// [tests/cases/compiler/es6ExportClauseWithoutModuleSpecifier.ts] ////
|
||||
|
||||
//// [server.ts]
|
||||
|
||||
export class c {
|
||||
}
|
||||
export interface i {
|
||||
}
|
||||
export module m {
|
||||
export var x = 10;
|
||||
}
|
||||
export var x = 10;
|
||||
export module uninstantiated {
|
||||
}
|
||||
|
||||
//// [client.ts]
|
||||
export { c } from "server";
|
||||
export { c as c2 } from "server";
|
||||
export { i, m as instantiatedModule } from "server";
|
||||
export { uninstantiated } from "server";
|
||||
export { x } from "server";
|
||||
|
||||
//// [server.js]
|
||||
var c = (function () {
|
||||
function c() {
|
||||
}
|
||||
return c;
|
||||
})();
|
||||
c = c;
|
||||
var m;
|
||||
(function (m) {
|
||||
m.x = 10;
|
||||
})(m || (m = {}));
|
||||
export { m };
|
||||
export var x = 10;
|
||||
//// [client.js]
|
||||
var _server = require("server");
|
||||
exports.c = _server.c;
|
||||
var _server_1 = require("server");
|
||||
exports.c2 = _server_1.c;
|
||||
var _server_2 = require("server");
|
||||
exports.i = _server_2.i;
|
||||
exports.instantiatedModule = _server_2.m;
|
||||
var _server_3 = require("server");
|
||||
exports.uninstantiated = _server_3.uninstantiated;
|
||||
var _server_4 = require("server");
|
||||
exports.x = _server_4.x;
|
||||
|
||||
|
||||
//// [server.d.ts]
|
||||
export declare class c {
|
||||
}
|
||||
export interface i {
|
||||
}
|
||||
export declare module m {
|
||||
var x: number;
|
||||
}
|
||||
export declare var x: number;
|
||||
export declare module uninstantiated {
|
||||
}
|
||||
//// [client.d.ts]
|
||||
export { c } from "server";
|
||||
export { c as c2 } from "server";
|
||||
export { i, m as instantiatedModule } from "server";
|
||||
export { uninstantiated } from "server";
|
||||
export { x } from "server";
|
|
@ -27,7 +27,8 @@ var m1;
|
|||
m1.l = b, m1.m = m1.k;
|
||||
const n = m1.k;
|
||||
const o = n, p = m1.k;
|
||||
})(m1 = m1 || (m1 = {}));
|
||||
})(m1 || (m1 = {}));
|
||||
export { m1 };
|
||||
var m2;
|
||||
(function (m2) {
|
||||
m2.k = a;
|
||||
|
|
|
@ -27,7 +27,8 @@ var m1;
|
|||
m1.l = b, m1.m = m1.k;
|
||||
let n = m1.k;
|
||||
let o = n, p = m1.k;
|
||||
})(m1 = m1 || (m1 = {}));
|
||||
})(m1 || (m1 = {}));
|
||||
export { m1 };
|
||||
var m2;
|
||||
(function (m2) {
|
||||
m2.k = a;
|
||||
|
|
58
tests/baselines/reference/es6ModuleModuleDeclaration.js
Normal file
58
tests/baselines/reference/es6ModuleModuleDeclaration.js
Normal file
|
@ -0,0 +1,58 @@
|
|||
//// [es6ModuleModuleDeclaration.ts]
|
||||
export module m1 {
|
||||
export var a = 10;
|
||||
var b = 10;
|
||||
export module innerExportedModule {
|
||||
export var k = 10;
|
||||
var l = 10;
|
||||
}
|
||||
export module innerNonExportedModule {
|
||||
export var x = 10;
|
||||
var y = 10;
|
||||
}
|
||||
}
|
||||
module m2 {
|
||||
export var a = 10;
|
||||
var b = 10;
|
||||
export module innerExportedModule {
|
||||
export var k = 10;
|
||||
var l = 10;
|
||||
}
|
||||
export module innerNonExportedModule {
|
||||
export var x = 10;
|
||||
var y = 10;
|
||||
}
|
||||
}
|
||||
|
||||
//// [es6ModuleModuleDeclaration.js]
|
||||
var m1;
|
||||
(function (m1) {
|
||||
m1.a = 10;
|
||||
var b = 10;
|
||||
var innerExportedModule;
|
||||
(function (innerExportedModule) {
|
||||
innerExportedModule.k = 10;
|
||||
var l = 10;
|
||||
})(innerExportedModule = m1.innerExportedModule || (m1.innerExportedModule = {}));
|
||||
var innerNonExportedModule;
|
||||
(function (innerNonExportedModule) {
|
||||
innerNonExportedModule.x = 10;
|
||||
var y = 10;
|
||||
})(innerNonExportedModule = m1.innerNonExportedModule || (m1.innerNonExportedModule = {}));
|
||||
})(m1 || (m1 = {}));
|
||||
export { m1 };
|
||||
var m2;
|
||||
(function (m2) {
|
||||
m2.a = 10;
|
||||
var b = 10;
|
||||
var innerExportedModule;
|
||||
(function (innerExportedModule) {
|
||||
innerExportedModule.k = 10;
|
||||
var l = 10;
|
||||
})(innerExportedModule = m2.innerExportedModule || (m2.innerExportedModule = {}));
|
||||
var innerNonExportedModule;
|
||||
(function (innerNonExportedModule) {
|
||||
innerNonExportedModule.x = 10;
|
||||
var y = 10;
|
||||
})(innerNonExportedModule = m2.innerNonExportedModule || (m2.innerNonExportedModule = {}));
|
||||
})(m2 || (m2 = {}));
|
57
tests/baselines/reference/es6ModuleModuleDeclaration.types
Normal file
57
tests/baselines/reference/es6ModuleModuleDeclaration.types
Normal file
|
@ -0,0 +1,57 @@
|
|||
=== tests/cases/compiler/es6ModuleModuleDeclaration.ts ===
|
||||
export module m1 {
|
||||
>m1 : typeof m1
|
||||
|
||||
export var a = 10;
|
||||
>a : number
|
||||
|
||||
var b = 10;
|
||||
>b : number
|
||||
|
||||
export module innerExportedModule {
|
||||
>innerExportedModule : typeof innerExportedModule
|
||||
|
||||
export var k = 10;
|
||||
>k : number
|
||||
|
||||
var l = 10;
|
||||
>l : number
|
||||
}
|
||||
export module innerNonExportedModule {
|
||||
>innerNonExportedModule : typeof innerNonExportedModule
|
||||
|
||||
export var x = 10;
|
||||
>x : number
|
||||
|
||||
var y = 10;
|
||||
>y : number
|
||||
}
|
||||
}
|
||||
module m2 {
|
||||
>m2 : typeof m2
|
||||
|
||||
export var a = 10;
|
||||
>a : number
|
||||
|
||||
var b = 10;
|
||||
>b : number
|
||||
|
||||
export module innerExportedModule {
|
||||
>innerExportedModule : typeof innerExportedModule
|
||||
|
||||
export var k = 10;
|
||||
>k : number
|
||||
|
||||
var l = 10;
|
||||
>l : number
|
||||
}
|
||||
export module innerNonExportedModule {
|
||||
>innerNonExportedModule : typeof innerNonExportedModule
|
||||
|
||||
export var x = 10;
|
||||
>x : number
|
||||
|
||||
var y = 10;
|
||||
>y : number
|
||||
}
|
||||
}
|
|
@ -27,7 +27,8 @@ var m1;
|
|||
m1.l = b, m1.m = m1.k;
|
||||
var n = m1.k;
|
||||
var o = n, p = m1.k;
|
||||
})(m1 = m1 || (m1 = {}));
|
||||
})(m1 || (m1 = {}));
|
||||
export { m1 };
|
||||
var m2;
|
||||
(function (m2) {
|
||||
m2.k = a;
|
||||
|
|
25
tests/cases/compiler/es6ModuleModuleDeclaration.ts
Normal file
25
tests/cases/compiler/es6ModuleModuleDeclaration.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
// @target: ES6
|
||||
export module m1 {
|
||||
export var a = 10;
|
||||
var b = 10;
|
||||
export module innerExportedModule {
|
||||
export var k = 10;
|
||||
var l = 10;
|
||||
}
|
||||
export module innerNonExportedModule {
|
||||
export var x = 10;
|
||||
var y = 10;
|
||||
}
|
||||
}
|
||||
module m2 {
|
||||
export var a = 10;
|
||||
var b = 10;
|
||||
export module innerExportedModule {
|
||||
export var k = 10;
|
||||
var l = 10;
|
||||
}
|
||||
export module innerNonExportedModule {
|
||||
export var x = 10;
|
||||
var y = 10;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue