27 lines
579 B
JavaScript
27 lines
579 B
JavaScript
var traverse = require("../traverse");
|
|
var util = require("../util");
|
|
var b = require("ast-types").builders;
|
|
|
|
exports.ArrowFunctionExpression = function (node) {
|
|
var body = node.body;
|
|
|
|
// expression body
|
|
if (body.type !== "BlockStatement") {
|
|
body = b.blockStatement([
|
|
b.returnStatement(body)
|
|
]);
|
|
}
|
|
|
|
node.expression = false;
|
|
node.body = body;
|
|
node.type = "FunctionExpression";
|
|
|
|
if (traverse.hasType(node, "ThisExpression")) {
|
|
return util.template("function-bind-this", {
|
|
FUNCTION: node
|
|
});
|
|
} else {
|
|
return node;
|
|
}
|
|
};
|