add support for circular references and hoist all variable declarations

This commit is contained in:
Sebastian McKenzie
2015-01-01 22:30:28 +11:00
parent 27e9f9d616
commit c408432445
12 changed files with 145 additions and 98 deletions

View File

@@ -1,4 +1,5 @@
System.register([], function (_export) {
var Foo;
_export("default", foo);
function foo() {}
@@ -19,7 +20,7 @@ System.register([], function (_export) {
_export("default", function () {});
var Foo = function Foo() {};
Foo = function Foo() {};
_export("default", Foo);
}

View File

@@ -1,12 +1,10 @@
System.register(["foo"], function (_export) {
var _foo;
return {
setters: [function (m) {
_foo = m
for (var i in _foo) {
_export(i, _foo[i])
setters: [function (_foo) {
for (var _key in _foo) {
_export(_key, _foo[_key])
}
_export("foo", _foo.foo);
_export("foo", _foo.foo);
@@ -20,7 +18,6 @@ System.register(["foo"], function (_export) {
_export("default", _foo.foo);
_export("bar", _foo.bar);
}],
execute: function () {
"use strict";

View File

@@ -1,4 +1,5 @@
System.register([], function (_export) {
var foo, foo2, foo3, foo4, foo5, foo6, foo8;
_export("foo7", foo7);
function foo7() {}
@@ -7,13 +8,13 @@ System.register([], function (_export) {
execute: function () {
"use strict";
var foo = _export("foo", 1);
var foo2 = _export("foo2", function () {});
var foo3 = _export("foo3", undefined);
var foo4 = _export("foo4", 2);
var foo5 = _export("foo5", undefined);
var foo6 = _export("foo6", 3);
var foo8 = function foo8() {};
foo = _export("foo", 1);
foo2 = _export("foo2", function () {});
foo3 = _export("foo3", undefined);
foo4 = _export("foo4", 2);
foo5 = _export("foo5", undefined);
foo6 = _export("foo6", 3);
foo8 = function foo8() {};
_export("foo8", foo8);
}

View File

@@ -1,24 +1,20 @@
System.register(["./evens"], function (_export) {
var p;
var isEven, p, isOdd;
_export("nextOdd", nextOdd);
function nextOdd(n) {
return _export("p", p = isEven(n) ? n + 1 : n + 2);
}
var _evens;
return {
setters: [function (m) {
_evens = m
setters: [function (_evens) {
isEven = _evens.isEven;
}],
execute: function () {
"use strict";
var isEven = _evens.isEven;
_export("p", p = 5);
var isOdd = _export("isOdd", (function (isEven) {
p = _export("p", 5);
isOdd = _export("isOdd", (function (isEven) {
return function (n) {
return !isEven(n);
};

View File

@@ -1,14 +1,12 @@
System.register([], function (_export) {
var _foo;
System.register(["foo"], function (_export) {
var foo, foo;
return {
setters: [function (m) {
_foo = m
setters: [function (_foo) {
foo = _foo["default"];
foo = _foo["default"];
}],
execute: function () {
"use strict";
var foo = _foo["default"];
var foo = _foo["default"];
}
};
});

View File

@@ -1,13 +1,11 @@
System.register(["foo"], function (_export) {
var _foo;
var foo;
return {
setters: [function (m) {
_foo = m
setters: [function (_foo) {
foo = _foo;
}],
execute: function () {
"use strict";
var foo = _foo;
}
};
});
});

View File

@@ -1,14 +1,12 @@
System.register(["foo"], function (_export) {
var _foo;
var foo, xyz;
return {
setters: [function (m) {
_foo = m
setters: [function (_foo) {
foo = _foo["default"];
xyz = _foo.baz;
}],
execute: function () {
"use strict";
var foo = _foo["default"];
var xyz = _foo.baz;
}
};
});

View File

@@ -1,18 +1,16 @@
System.register(["foo"], function (_export) {
var _foo;
var bar, bar, baz, baz, baz, xyz;
return {
setters: [function (m) {
_foo = m
setters: [function (_foo) {
bar = _foo.bar;
bar = _foo.bar;
baz = _foo.baz;
baz = _foo.bar;
baz = _foo.bar;
xyz = _foo.xyz;
}],
execute: function () {
"use strict";
var bar = _foo.bar;
var bar = _foo.bar;
var baz = _foo.baz;
var baz = _foo.bar;
var baz = _foo.bar;
var xyz = _foo.xyz;
}
};
});
});

View File

@@ -1,15 +1,8 @@
System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export) {
var _foo, _fooBar, _directoryFooBar;
return {
setters: [function (m) {
_foo = m
}, function (m) {
_fooBar = m
}, function (m) {
_directoryFooBar = m
}],
setters: [function (_foo) {}, function (_fooBar) {}, function (_directoryFooBar) {}],
execute: function () {
"use strict";
}
};
});
});

View File

@@ -1,24 +1,18 @@
System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export) {
var _foo, _fooBar, _directoryFooBar;
var foo, foo, bar, bar, test;
return {
setters: [function (m) {
_foo = m
}, function (m) {
_fooBar = m
}, function (m) {
_directoryFooBar = m
}],
setters: [function (_foo) {
foo = _foo["default"];
foo = _foo;
bar = _foo.bar;
bar = _foo.foo;
}, function (_fooBar) {}, function (_directoryFooBar) {}],
execute: function () {
"use strict";
var foo = _foo["default"];
var foo = _foo;
var bar = _foo.bar;
var bar = _foo.foo;
_export("test", test);
var test = _export("test", 5);
test = _export("test", 5);
_export("default", test);
}
};

View File

@@ -1,10 +1,11 @@
System.register([], function (_export) {
var test;
return {
setters: [],
execute: function () {
"use strict";
var test = _export("test", 2);
test = _export("test", 2);
_export("test", test = 5);
_export("test", test += 1);