System module format - fixes function hoisting failure case (#8820)

* failing test case

* fix function hoist bug
This commit is contained in:
Guy Bedford
2018-10-08 05:30:02 +02:00
committed by Henry Zhu
parent 850bc1d3dd
commit 3fa4f53d0a
3 changed files with 45 additions and 2 deletions

View File

@@ -332,8 +332,23 @@ export default declare((api, options) => {
const nodes = [];
for (const specifier of specifiers) {
// only globals exported this way
if (!path.scope.getBinding(specifier.local.name)) {
const binding = path.scope.getBinding(
specifier.local.name,
);
// hoisted function export
if (
binding &&
t.isFunctionDeclaration(binding.path.node)
) {
beforeBody.push(
buildExportCall(
specifier.exported.name,
t.cloneNode(specifier.local),
),
);
}
// only globals also exported this way
else if (!binding) {
nodes.push(
buildExportCall(
specifier.exported.name,