support multiple export specifier remapping
This commit is contained in:
parent
33fde5f143
commit
01a2aa7dd1
@ -15,7 +15,7 @@ var remapVisitor = {
|
||||
}
|
||||
|
||||
if (t.isUpdateExpression(node)) {
|
||||
var exported = formatter.getLocalReference(node.argument, scope);
|
||||
var exported = formatter.getExport(node.argument, scope);
|
||||
|
||||
if (exported) {
|
||||
this.skip();
|
||||
@ -47,7 +47,7 @@ var remapVisitor = {
|
||||
}
|
||||
|
||||
if (t.isAssignmentExpression(node)) {
|
||||
var exported = formatter.getLocalReference(node.left, scope);
|
||||
var exported = formatter.getExport(node.left, scope);
|
||||
if (exported) {
|
||||
this.skip();
|
||||
return formatter.remapExportAssignment(node, exported);
|
||||
@ -76,10 +76,7 @@ var exportsVisitor = traverse.explode({
|
||||
var bindings = declar.getBindingIdentifiers()
|
||||
for (var name in bindings) {
|
||||
var binding = bindings[name];
|
||||
formatter.localExports[name] = {
|
||||
binding: binding,
|
||||
exported: binding
|
||||
};
|
||||
formatter._addExport(name, binding);
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,10 +86,7 @@ var exportsVisitor = traverse.explode({
|
||||
var local = specifier.local;
|
||||
if (!local) continue;
|
||||
|
||||
formatter.localExports[local.name] = {
|
||||
binding: scope.getBindingIdentifier(local.name),
|
||||
exported: specifier.exported
|
||||
};
|
||||
formatter._addExport(local.name, specifier.exported);
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,18 +158,28 @@ export default class DefaultFormatter {
|
||||
}
|
||||
|
||||
remapExportAssignment(node, exported) {
|
||||
return t.assignmentExpression(
|
||||
"=",
|
||||
node.left,
|
||||
t.assignmentExpression(
|
||||
node.operator,
|
||||
t.memberExpression(t.identifier("exports"), exported),
|
||||
node.right
|
||||
)
|
||||
);
|
||||
var assign = node;
|
||||
|
||||
for (var i = 0; i < exported.length; i++) {
|
||||
assign = t.assignmentExpression(
|
||||
"=",
|
||||
t.memberExpression(t.identifier("exports"), exported[i]),
|
||||
assign
|
||||
);
|
||||
}
|
||||
|
||||
return assign;
|
||||
}
|
||||
|
||||
getLocalReference(node, scope) {
|
||||
_addExport(name, exported) {
|
||||
var info = this.localExports[name] ||= {
|
||||
binding: this.scope.getBindingIdentifier(name),
|
||||
exported: []
|
||||
};
|
||||
info.exported.push(exported);
|
||||
}
|
||||
|
||||
getExport(node, scope) {
|
||||
if (!t.isIdentifier(node)) return;
|
||||
|
||||
var local = this.localExports[node.name];
|
||||
|
||||
@ -126,7 +126,13 @@ export default class SystemFormatter extends AMDFormatter {
|
||||
}
|
||||
|
||||
remapExportAssignment(node, exported) {
|
||||
return this.buildExportCall(t.literal(exported.name), node);
|
||||
var assign = node;
|
||||
|
||||
for (var i = 0; i < exported.length; i++) {
|
||||
assign = this.buildExportCall(t.literal(exported[i].name), assign);
|
||||
}
|
||||
|
||||
return assign;
|
||||
}
|
||||
|
||||
buildExportCall(id, init, isStatement) {
|
||||
|
||||
@ -15,3 +15,7 @@ a = 3;
|
||||
var b = 2;
|
||||
export { b as c };
|
||||
b = 3;
|
||||
|
||||
var d = 3;
|
||||
export { d as e, d as f };
|
||||
d = 4;
|
||||
|
||||
@ -6,8 +6,8 @@ define(["exports"], function (exports) {
|
||||
});
|
||||
var test = 2;
|
||||
exports.test = test;
|
||||
test = exports.test = 5;
|
||||
test = exports.test += 1;
|
||||
exports.test = test = 5;
|
||||
exports.test = test += 1;
|
||||
|
||||
(function () {
|
||||
var test = 2;
|
||||
@ -18,10 +18,16 @@ define(["exports"], function (exports) {
|
||||
var a = 2;
|
||||
exports.a = a;
|
||||
|
||||
a = exports.a = 3;
|
||||
exports.a = a = 3;
|
||||
|
||||
var b = 2;
|
||||
exports.c = b;
|
||||
|
||||
b = exports.c = 3;
|
||||
});
|
||||
exports.c = b = 3;
|
||||
|
||||
var d = 3;
|
||||
exports.e = d;
|
||||
exports.f = d;
|
||||
|
||||
exports.f = exports.e = d = 4;
|
||||
});
|
||||
|
||||
@ -15,3 +15,7 @@ a = 3;
|
||||
var b = 2;
|
||||
export { b as c };
|
||||
b = 3;
|
||||
|
||||
var d = 3;
|
||||
export { d as e, d as f };
|
||||
d = 4;
|
||||
|
||||
@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
||||
});
|
||||
var test = 2;
|
||||
exports.test = test;
|
||||
test = exports.test = 5;
|
||||
test = exports.test += 1;
|
||||
exports.test = test = 5;
|
||||
exports.test = test += 1;
|
||||
|
||||
(function () {
|
||||
var test = 2;
|
||||
@ -17,9 +17,15 @@ test = exports.test += 1;
|
||||
var a = 2;
|
||||
exports.a = a;
|
||||
|
||||
a = exports.a = 3;
|
||||
exports.a = a = 3;
|
||||
|
||||
var b = 2;
|
||||
exports.c = b;
|
||||
|
||||
b = exports.c = 3;
|
||||
exports.c = b = 3;
|
||||
|
||||
var d = 3;
|
||||
exports.e = d;
|
||||
exports.f = d;
|
||||
|
||||
exports.f = exports.e = d = 4;
|
||||
|
||||
@ -15,3 +15,7 @@ a = 3;
|
||||
var b = 2;
|
||||
export { b as c };
|
||||
b = 3;
|
||||
|
||||
var d = 3;
|
||||
export { d as e, d as f };
|
||||
d = 4;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
System.register([], function (_export) {
|
||||
var test, a, b;
|
||||
var test, a, b, d;
|
||||
return {
|
||||
setters: [],
|
||||
execute: function () {
|
||||
@ -29,6 +29,14 @@ System.register([], function (_export) {
|
||||
_export("c", b);
|
||||
|
||||
_export("c", b = 3);
|
||||
|
||||
d = 3;
|
||||
|
||||
_export("e", d);
|
||||
|
||||
_export("f", d);
|
||||
|
||||
_export("f", _export("e", d = 4));
|
||||
}
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
@ -15,3 +15,7 @@ a = 3;
|
||||
var b = 2;
|
||||
export { b as c };
|
||||
b = 3;
|
||||
|
||||
var d = 3;
|
||||
export { d as e, d as f };
|
||||
d = 4;
|
||||
|
||||
@ -18,8 +18,8 @@
|
||||
});
|
||||
var test = 2;
|
||||
exports.test = test;
|
||||
test = exports.test = 5;
|
||||
test = exports.test += 1;
|
||||
exports.test = test = 5;
|
||||
exports.test = test += 1;
|
||||
|
||||
(function () {
|
||||
var test = 2;
|
||||
@ -30,10 +30,16 @@
|
||||
var a = 2;
|
||||
exports.a = a;
|
||||
|
||||
a = exports.a = 3;
|
||||
exports.a = a = 3;
|
||||
|
||||
var b = 2;
|
||||
exports.c = b;
|
||||
|
||||
b = exports.c = 3;
|
||||
});
|
||||
exports.c = b = 3;
|
||||
|
||||
var d = 3;
|
||||
exports.e = d;
|
||||
exports.f = d;
|
||||
|
||||
exports.f = exports.e = d = 4;
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user