split up export variable declarations - fixes #939, fixes #964

This commit is contained in:
Sebastian McKenzie 2015-03-08 02:52:10 +11:00
parent 9c9af6dbbd
commit 5d32432e67
23 changed files with 124 additions and 50 deletions

View File

@ -52,6 +52,16 @@ export function ExportDeclaration(node, parent, scope) {
node.declaration = null;
node._blockHoist = 2;
return [getDeclar(), node];
} else if (t.isVariableDeclaration(declar)) {
var specifiers = [];
var bindings = t.getBindingIdentifiers(declar);
for (var key in bindings) {
var id = bindings[key];
specifiers.push(t.exportSpecifier(id, id));
}
return [declar, t.exportDeclaration(null, specifiers)];
}
}
}

View File

@ -86,8 +86,8 @@ var run = function (task, done) {
}
};
var fn = new Function("require", "done", execCode);
fn.call(global, fakeRequire, chai.assert, done);
var fn = new Function("require", "done", "exports", execCode);
fn.call(global, fakeRequire, chai.assert, {}, done);
} catch (err) {
err.message = exec.loc + ": " + err.message;
err.message += codeFrame(execCode);

View File

@ -0,0 +1,2 @@
a;
export const a = 1;

View File

@ -0,0 +1,2 @@
export const a = 1;
a;

View File

@ -4,14 +4,22 @@ define(["exports"], function (exports) {
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
exports.foo7 = foo7;
var foo = exports.foo = 1;
var foo = exports.foo = 1;
var bar = exports.bar = 2;
var foo2 = exports.foo2 = function foo2() {};
var foo3 = exports.foo3 = undefined;
var foo4 = exports.foo4 = 2;
var foo5 = exports.foo5 = undefined;
var foo6 = exports.foo6 = 3;
var foo = 1;
exports.foo = foo;
var foo = 1,
bar = 2;
exports.foo = foo;
exports.bar = bar;
var foo2 = function foo2() {};
exports.foo2 = foo2;
var foo3;
exports.foo3 = foo3;
var foo4 = 2;
exports.foo4 = foo4;
var foo5 = undefined;
exports.foo5 = foo5;
var foo6 = 3;
exports.foo6 = foo6;
function foo7() {}

View File

@ -8,11 +8,12 @@ define(["exports", "./evens"], function (exports, _evens) {
return isEven(n) ? n + 1 : n + 2;
}
var isOdd = exports.isOdd = (function (isEven) {
var isOdd = (function (isEven) {
return function (n) {
return !isEven(n);
};
})(isEven);
exports.isOdd = isOdd;
Object.defineProperty(exports, "__esModule", {
value: true
});

View File

@ -9,8 +9,9 @@ define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports,
var bar = _foo.bar;
var bar2 = _foo.foo;
exports.test = test;
var test2 = exports.test2 = 5;
var test2 = 5;
exports.test2 = test2;
exports["default"] = test;
Object.defineProperty(exports, "__esModule", {
value: true

View File

@ -1,7 +1,8 @@
define(["exports"], function (exports) {
"use strict";
var test = exports.test = 2;
var test = 2;
exports.test = test;
test = exports.test = 5;
test = exports.test += 1;

View File

@ -3,14 +3,22 @@
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
exports.foo7 = foo7;
var foo = exports.foo = 1;
var foo = exports.foo = 1;
var bar = exports.bar = 2;
var foo2 = exports.foo2 = function foo2() {};
var foo3 = exports.foo3 = undefined;
var foo4 = exports.foo4 = 2;
var foo5 = exports.foo5 = undefined;
var foo6 = exports.foo6 = 3;
var foo = 1;
exports.foo = foo;
var foo = 1,
bar = 2;
exports.foo = foo;
exports.bar = bar;
var foo2 = function foo2() {};
exports.foo2 = foo2;
var foo3;
exports.foo3 = foo3;
var foo4 = 2;
exports.foo4 = foo4;
var foo5 = undefined;
exports.foo5 = foo5;
var foo6 = 3;
exports.foo6 = foo6;
function foo7() {}

View File

@ -8,11 +8,12 @@ function nextOdd(n) {
return isEven(n) ? n + 1 : n + 2;
}
var isOdd = exports.isOdd = (function (isEven) {
var isOdd = (function (isEven) {
return function (n) {
return !isEven(n);
};
})(isEven);
exports.isOdd = isOdd;
Object.defineProperty(exports, "__esModule", {
value: true
});

View File

@ -1,4 +1,5 @@
"use strict";
var foo = exports.foo = 5;
exports.__esModule = true;
var foo = 5;
exports.foo = foo;
exports.__esModule = true;

View File

@ -19,7 +19,8 @@ var bar = require("foo4").bar;
var bar2 = require("foo5").foo;
exports.test = test;
var test = exports.test = 5;
var test = 5;
exports.test = test;
Object.defineProperty(exports, "__esModule", {
value: true
});

View File

@ -1,6 +1,7 @@
"use strict";
var test = exports.test = 2;
var test = 2;
exports.test = test;
test = exports.test = 5;
test = exports.test += 1;

View File

@ -6,7 +6,7 @@ var foo = 1;
var foo = 1,
bar = 2;
var foo2 = function foo2() {};
var foo3 = undefined;
var foo3;
var foo4 = 2;
var foo5 = undefined;
var foo6 = 3;

View File

@ -12,12 +12,28 @@ System.register([], function (_export) {
_classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
foo = _export("foo", 1);
foo2 = _export("foo2", function foo2() {});
foo3 = _export("foo3", undefined);
foo4 = _export("foo4", 2);
foo5 = _export("foo5", undefined);
foo6 = _export("foo6", 3);
foo = 1;
_export("foo", foo);
foo2 = function foo2() {};
_export("foo2", foo2);
_export("foo3", foo3);
foo4 = 2;
_export("foo4", foo4);
foo5 = undefined;
_export("foo5", foo5);
foo6 = 3;
_export("foo6", foo6);
foo8 = _export("foo8", function foo8() {
_classCallCheck(this, foo8);
});

View File

@ -14,12 +14,17 @@ System.register(["./evens"], function (_export) {
execute: function () {
"use strict";
p = _export("p", 5);
isOdd = _export("isOdd", (function (isEven) {
p = 5;
_export("p", p);
isOdd = (function (isEven) {
return function (n) {
return !isEven(n);
};
})(isEven));
})(isEven);
_export("isOdd", isOdd);
}
};
});

View File

@ -12,7 +12,9 @@ System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export) {
_export("test", test);
test2 = _export("test2", 5);
test2 = 5;
_export("test2", test2);
_export("default", test);
}

View File

@ -5,7 +5,9 @@ System.register([], function (_export) {
execute: function () {
"use strict";
test = _export("test", 2);
test = 2;
_export("test", test);
_export("test", test = 5);
_export("test", test += 1);

View File

@ -10,14 +10,22 @@
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
exports.foo7 = foo7;
var foo = exports.foo = 1;
var foo = exports.foo = 1;
var bar = exports.bar = 2;
var foo2 = exports.foo2 = function foo2() {};
var foo3 = exports.foo3 = undefined;
var foo4 = exports.foo4 = 2;
var foo5 = exports.foo5 = undefined;
var foo6 = exports.foo6 = 3;
var foo = 1;
exports.foo = foo;
var foo = 1,
bar = 2;
exports.foo = foo;
exports.bar = bar;
var foo2 = function foo2() {};
exports.foo2 = foo2;
var foo3;
exports.foo3 = foo3;
var foo4 = 2;
exports.foo4 = foo4;
var foo5 = undefined;
exports.foo5 = foo5;
var foo6 = 3;
exports.foo6 = foo6;
function foo7() {}

View File

@ -14,11 +14,12 @@
return isEven(n) ? n + 1 : n + 2;
}
var isOdd = exports.isOdd = (function (isEven) {
var isOdd = (function (isEven) {
return function (n) {
return !isEven(n);
};
})(isEven);
exports.isOdd = isOdd;
Object.defineProperty(exports, "__esModule", {
value: true
});

View File

@ -15,8 +15,9 @@
var bar = _foo.bar;
var bar2 = _foo.foo;
exports.test = test;
var test2 = exports.test2 = 5;
var test2 = 5;
exports.test2 = test2;
exports["default"] = test;
Object.defineProperty(exports, "__esModule", {
value: true

View File

@ -7,7 +7,8 @@
})(function (exports) {
"use strict";
var test = exports.test = 2;
var test = 2;
exports.test = test;
test = exports.test = 5;
test = exports.test += 1;

View File

@ -28,7 +28,8 @@ var foo = _babelHelpers.interopRequire(_someModule);
var bar = _babelHelpers.interopRequireWildcard(_someModule);
var myWord = exports.myWord = _core.Symbol("abc");
var myWord = _core.Symbol("abc");
exports.myWord = myWord;
Object.defineProperty(exports, "__esModule", {
value: true
});