babel/lib/6to5/transformation/helpers/remap-async-to-generator.js
2015-01-21 14:34:47 +03:00

34 lines
690 B
JavaScript

"use strict";
var traverse = require("../../traverse");
var t = require("../../types");
var traverser = {
enter: function (node, parent, scope, context) {
if (t.isFunction(node)) context.skip();
if (t.isAwaitExpression(node)) {
node.type = "YieldExpression";
}
}
};
module.exports = function (node, callId) {
node.async = false;
node.generator = true;
traverse(node, traverser);
var call = t.callExpression(callId, [node]);
if (t.isFunctionDeclaration(node)) {
var declar = t.variableDeclaration("var", [
t.variableDeclarator(node.id, call)
]);
declar._blockHoist = true;
return declar;
} else {
return call;
}
};