Merge pull request #4179 from Microsoft/exportDeclarationsInSystem

emit export declarations for system modules as a part of 'execute' me…
This commit is contained in:
Vladimir Matveev
2015-08-10 13:59:45 -07:00
18 changed files with 605 additions and 176 deletions

View File

@@ -22,8 +22,8 @@ System.register(['foo'], function(exports_1) {
var cls, cls2, x, y, z, M;
return {
setters:[
function (_alias) {
alias = _alias;
function (alias_1) {
alias = alias_1;
}],
execute: function() {
cls = alias.Class;

View File

@@ -21,8 +21,8 @@ System.register(["foo"], function(exports_1) {
var cls, cls2, x, y, z, M;
return {
setters:[
function (_foo_1) {
foo_1 = _foo_1;
function (foo_1_1) {
foo_1 = foo_1_1;
}],
execute: function() {
cls = foo_1.alias.Class;

View File

@@ -14,19 +14,19 @@ System.register(['file1', 'file2'], function(exports_1) {
var file1_1, n2;
return {
setters:[
function (_file1_1) {
file1_1 = _file1_1;
exports_1("n", file1_1["default"]);
exports_1("n1", file1_1["default"]);
exports_1("x", file1_1.x);
exports_1("y", file1_1.x);
function (file1_1_1) {
file1_1 = file1_1_1;
},
function (_n2) {
n2 = _n2;
exports_1("n2", n2);
exports_1("n3", n2);
function (n2_1) {
n2 = n2_1;
}],
execute: function() {
exports_1("x", file1_1.x);
exports_1("y", file1_1.x);
exports_1("n", file1_1["default"]);
exports_1("n1", file1_1["default"]);
exports_1("n2", n2);
exports_1("n3", n2);
}
}
});

View File

@@ -14,19 +14,19 @@ System.register(['file1', 'file2'], function(exports_1) {
var file1_1, n2;
return {
setters:[
function (_file1_1) {
file1_1 = _file1_1;
exports_1("n", file1_1.default);
exports_1("n1", file1_1.default);
exports_1("x", file1_1.x);
exports_1("y", file1_1.x);
function (file1_1_1) {
file1_1 = file1_1_1;
},
function (_n2) {
n2 = _n2;
exports_1("n2", n2);
exports_1("n3", n2);
function (n2_1) {
n2 = n2_1;
}],
execute: function() {
exports_1("x", file1_1.x);
exports_1("y", file1_1.x);
exports_1("n", file1_1.default);
exports_1("n1", file1_1.default);
exports_1("n2", n2);
exports_1("n3", n2);
}
}
});

View File

@@ -59,8 +59,8 @@ System.register(['bar'], function(exports_1) {
}
return {
setters:[
function (_bar_1) {
exportStar_1(_bar_1);
function (bar_1_1) {
exportStar_1(bar_1_1);
}],
execute: function() {
}
@@ -82,8 +82,8 @@ System.register(['bar'], function(exports_1) {
}
return {
setters:[
function (_bar_1) {
exportStar_1(_bar_1);
function (bar_1_1) {
exportStar_1(bar_1_1);
}],
execute: function() {
exports_1("x", x);
@@ -108,14 +108,14 @@ System.register(['a', 'bar'], function(exports_1) {
}
return {
setters:[
function (_a_1) {
var reexports_1 = {};
reexports_1["x"] = _a_1["x"];
reexports_1["z"] = _a_1["y"];
exports_1(reexports_1);
function (a_1_1) {
exports_1({
"x": a_1_1["x"],
"z": a_1_1["y"]
});
},
function (_bar_1) {
exportStar_1(_bar_1);
function (bar_1_1) {
exportStar_1(bar_1_1);
}],
execute: function() {
}
@@ -130,11 +130,11 @@ System.register(['a'], function(exports_1) {
exports_1("default", default_1);
return {
setters:[
function (_a_1) {
var reexports_1 = {};
reexports_1["s"] = _a_1["s"];
reexports_1["s2"] = _a_1["s1"];
exports_1(reexports_1);
function (a_1_1) {
exports_1({
"s": a_1_1["s"],
"s2": a_1_1["s1"]
});
}],
execute: function() {
exports_1("z", z);
@@ -154,8 +154,8 @@ System.register(['a'], function(exports_1) {
}
return {
setters:[
function (_a_1) {
exportStar_1(_a_1);
function (a_1_1) {
exportStar_1(a_1_1);
}],
execute: function() {
}

View File

@@ -0,0 +1,16 @@
tests/cases/compiler/systemModule14.ts(6,17): error TS2307: Cannot find module 'foo'.
==== tests/cases/compiler/systemModule14.ts (1 errors) ====
function foo() {
return a;
}
import {a} from "foo";
~~~~~
!!! error TS2307: Cannot find module 'foo'.
export {foo}
var x = 1;
export {foo as b}

View File

@@ -0,0 +1,31 @@
//// [systemModule14.ts]
function foo() {
return a;
}
import {a} from "foo";
export {foo}
var x = 1;
export {foo as b}
//// [systemModule14.js]
System.register(["foo"], function(exports_1) {
var foo_1;
var x;
function foo() {
return foo_1.a;
}
return {
setters:[
function (foo_1_1) {
foo_1 = foo_1_1;
}],
execute: function() {
exports_1("foo", foo);
x = 1;
exports_1("b", foo);
}
}
});

View File

@@ -0,0 +1,88 @@
//// [tests/cases/compiler/systemModule15.ts] ////
//// [file1.ts]
import * as moduleB from "./file2"
declare function use(v: any): void;
use(moduleB.value);
use(moduleB.moduleC);
use(moduleB.moduleCStar);
//// [file2.ts]
import * as moduleCStar from "./file3"
import {value2} from "./file4"
import moduleC from "./file3"
import {value} from "./file3"
export {
moduleCStar,
moduleC,
value
}
//// [file3.ts]
export var value = "youpi";
export default value;
//// [file4.ts]
export var value2 = "v";
//// [file3.js]
System.register([], function(exports_1) {
var value;
return {
setters:[],
execute: function() {
exports_1("value", value = "youpi");
exports_1("default",value);
}
}
});
//// [file4.js]
System.register([], function(exports_1) {
var value2;
return {
setters:[],
execute: function() {
exports_1("value2", value2 = "v");
}
}
});
//// [file2.js]
System.register(["./file3"], function(exports_1) {
var moduleCStar, file3_1, file3_2;
return {
setters:[
function (moduleCStar_1) {
moduleCStar = moduleCStar_1;
file3_1 = moduleCStar_1;
file3_2 = moduleCStar_1;
}],
execute: function() {
exports_1("moduleCStar", moduleCStar);
exports_1("moduleC", file3_1["default"]);
exports_1("value", file3_2.value);
}
}
});
//// [file1.js]
System.register(["./file2"], function(exports_1) {
var moduleB;
return {
setters:[
function (moduleB_1) {
moduleB = moduleB_1;
}],
execute: function() {
use(moduleB.value);
use(moduleB.moduleC);
use(moduleB.moduleCStar);
}
}
});

View File

@@ -0,0 +1,66 @@
=== tests/cases/compiler/file1.ts ===
import * as moduleB from "./file2"
>moduleB : Symbol(moduleB, Decl(file1.ts, 2, 6))
declare function use(v: any): void;
>use : Symbol(use, Decl(file1.ts, 2, 34))
>v : Symbol(v, Decl(file1.ts, 4, 21))
use(moduleB.value);
>use : Symbol(use, Decl(file1.ts, 2, 34))
>moduleB.value : Symbol(moduleB.value, Decl(file2.ts, 8, 12))
>moduleB : Symbol(moduleB, Decl(file1.ts, 2, 6))
>value : Symbol(moduleB.value, Decl(file2.ts, 8, 12))
use(moduleB.moduleC);
>use : Symbol(use, Decl(file1.ts, 2, 34))
>moduleB.moduleC : Symbol(moduleB.moduleC, Decl(file2.ts, 7, 16))
>moduleB : Symbol(moduleB, Decl(file1.ts, 2, 6))
>moduleC : Symbol(moduleB.moduleC, Decl(file2.ts, 7, 16))
use(moduleB.moduleCStar);
>use : Symbol(use, Decl(file1.ts, 2, 34))
>moduleB.moduleCStar : Symbol(moduleB.moduleCStar, Decl(file2.ts, 6, 8))
>moduleB : Symbol(moduleB, Decl(file1.ts, 2, 6))
>moduleCStar : Symbol(moduleB.moduleCStar, Decl(file2.ts, 6, 8))
=== tests/cases/compiler/file2.ts ===
import * as moduleCStar from "./file3"
>moduleCStar : Symbol(moduleCStar, Decl(file2.ts, 1, 6))
import {value2} from "./file4"
>value2 : Symbol(value2, Decl(file2.ts, 2, 8))
import moduleC from "./file3"
>moduleC : Symbol(moduleC, Decl(file2.ts, 3, 6))
import {value} from "./file3"
>value : Symbol(value, Decl(file2.ts, 4, 8))
export {
moduleCStar,
>moduleCStar : Symbol(moduleCStar, Decl(file2.ts, 6, 8))
moduleC,
>moduleC : Symbol(moduleC, Decl(file2.ts, 7, 16))
value
>value : Symbol(value, Decl(file2.ts, 8, 12))
}
=== tests/cases/compiler/file3.ts ===
export var value = "youpi";
>value : Symbol(value, Decl(file3.ts, 1, 10))
export default value;
>value : Symbol(value, Decl(file3.ts, 1, 10))
=== tests/cases/compiler/file4.ts ===
export var value2 = "v";
>value2 : Symbol(value2, Decl(file4.ts, 1, 10))

View File

@@ -0,0 +1,71 @@
=== tests/cases/compiler/file1.ts ===
import * as moduleB from "./file2"
>moduleB : typeof moduleB
declare function use(v: any): void;
>use : (v: any) => void
>v : any
use(moduleB.value);
>use(moduleB.value) : void
>use : (v: any) => void
>moduleB.value : string
>moduleB : typeof moduleB
>value : string
use(moduleB.moduleC);
>use(moduleB.moduleC) : void
>use : (v: any) => void
>moduleB.moduleC : string
>moduleB : typeof moduleB
>moduleC : string
use(moduleB.moduleCStar);
>use(moduleB.moduleCStar) : void
>use : (v: any) => void
>moduleB.moduleCStar : typeof
>moduleB : typeof moduleB
>moduleCStar : typeof
=== tests/cases/compiler/file2.ts ===
import * as moduleCStar from "./file3"
>moduleCStar : typeof moduleCStar
import {value2} from "./file4"
>value2 : string
import moduleC from "./file3"
>moduleC : string
import {value} from "./file3"
>value : string
export {
moduleCStar,
>moduleCStar : typeof moduleCStar
moduleC,
>moduleC : string
value
>value : string
}
=== tests/cases/compiler/file3.ts ===
export var value = "youpi";
>value : string
>"youpi" : string
export default value;
>value : string
=== tests/cases/compiler/file4.ts ===
export var value2 = "v";
>value2 : string
>"v" : string

View File

@@ -0,0 +1,33 @@
tests/cases/compiler/systemModule16.ts(2,20): error TS2307: Cannot find module 'foo'.
tests/cases/compiler/systemModule16.ts(3,20): error TS2307: Cannot find module 'bar'.
tests/cases/compiler/systemModule16.ts(4,15): error TS2307: Cannot find module 'foo'.
tests/cases/compiler/systemModule16.ts(5,15): error TS2307: Cannot find module 'bar'.
tests/cases/compiler/systemModule16.ts(8,32): error TS2307: Cannot find module 'foo'.
tests/cases/compiler/systemModule16.ts(9,32): error TS2307: Cannot find module 'bar'.
==== tests/cases/compiler/systemModule16.ts (6 errors) ====
import * as x from "foo";
~~~~~
!!! error TS2307: Cannot find module 'foo'.
import * as y from "bar";
~~~~~
!!! error TS2307: Cannot find module 'bar'.
export * from "foo";
~~~~~
!!! error TS2307: Cannot find module 'foo'.
export * from "bar"
~~~~~
!!! error TS2307: Cannot find module 'bar'.
export {x}
export {y}
import {a1, b1, c1 as d1} from "foo";
~~~~~
!!! error TS2307: Cannot find module 'foo'.
export {a2, b2, c2 as d2} from "bar";
~~~~~
!!! error TS2307: Cannot find module 'bar'.
x,y,a1,b1,d1;

View File

@@ -0,0 +1,54 @@
//// [systemModule16.ts]
import * as x from "foo";
import * as y from "bar";
export * from "foo";
export * from "bar"
export {x}
export {y}
import {a1, b1, c1 as d1} from "foo";
export {a2, b2, c2 as d2} from "bar";
x,y,a1,b1,d1;
//// [systemModule16.js]
System.register(["foo", "bar"], function(exports_1) {
var x, y, foo_1;
var exportedNames_1 = {
'x': true,
'y': true,
'a2': true,
'b2': true,
'd2': true
};
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
function (x_1) {
x = x_1;
exportStar_1(x_1);
foo_1 = x_1;
},
function (y_1) {
y = y_1;
exportStar_1(y_1);
exports_1({
"a2": y_1["a2"],
"b2": y_1["b2"],
"d2": y_1["c2"]
});
}],
execute: function() {
exports_1("x", x);
exports_1("y", y);
x, y, foo_1.a1, foo_1.b1, foo_1.c1;
}
}
});

View File

@@ -38,24 +38,24 @@ System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'],
}
return {
setters:[
function (_ns) {
ns = _ns;
function (ns_1) {
ns = ns_1;
},
function (_file2_1) {
file2_1 = _file2_1;
function (file2_1_1) {
file2_1 = file2_1_1;
},
function (_file3_1) {
file3_1 = _file3_1;
function (file3_1_1) {
file3_1 = file3_1_1;
},
function (_) {},
function (_file5_1) {
file5_1 = _file5_1;
function (_1) {},
function (file5_1_1) {
file5_1 = file5_1_1;
},
function (_ns3) {
ns3 = _ns3;
function (ns3_1) {
ns3 = ns3_1;
},
function (_file7_1) {
exportStar_1(_file7_1);
function (file7_1_1) {
exportStar_1(file7_1_1);
}],
execute: function() {
ns.f();

View File

@@ -38,8 +38,8 @@ System.register(['./foo'], function(exports_1) {
var Bar;
return {
setters:[
function (_foo_1) {
foo_1 = _foo_1;
function (foo_1_1) {
foo_1 = foo_1_1;
}],
execute: function() {
Bar = (function (_super) {

View File

@@ -0,0 +1,12 @@
// @module: system
// @isolatedModules: true
function foo() {
return a;
}
import {a} from "foo";
export {foo}
var x = 1;
export {foo as b}

View File

@@ -0,0 +1,34 @@
// @module: system
// @isolatedModules: true
// @filename: file1.ts
import * as moduleB from "./file2"
declare function use(v: any): void;
use(moduleB.value);
use(moduleB.moduleC);
use(moduleB.moduleCStar);
// @filename: file2.ts
import * as moduleCStar from "./file3"
import {value2} from "./file4"
import moduleC from "./file3"
import {value} from "./file3"
export {
moduleCStar,
moduleC,
value
}
// @filename: file3.ts
export var value = "youpi";
export default value;
// @filename: file4.ts
export var value2 = "v";

View File

@@ -0,0 +1,13 @@
// @module: system
// @isolatedModules: true
import * as x from "foo";
import * as y from "bar";
export * from "foo";
export * from "bar"
export {x}
export {y}
import {a1, b1, c1 as d1} from "foo";
export {a2, b2, c2 as d2} from "bar";
x,y,a1,b1,d1;