babel/lib/6to5/transformation/transformers/playground-object-getter-memoization.js
2014-12-31 11:54:13 +11:00

33 lines
783 B
JavaScript

var traverse = require("../../traverse");
var util = require("../../util");
var t = require("../../types");
exports.Property =
exports.MethodDefinition = function (node, parent, file, scope) {
if (node.kind !== "memo") return;
node.kind = "get";
var value = node.value;
t.ensureBlock(value);
var body = value.body.body;
var key = node.key;
if (t.isIdentifier(key) && !node.computed) {
key = t.literal(key.name);
}
traverse(value, {
enter: function (node) {
if (t.isFunction(node)) return;
if (t.isReturnStatement(node) && node.argument) {
node.argument = t.memberExpression(util.template("object-getter-memoization", {
KEY: key,
VALUE: node.argument
}), key, true);
}
}
});
};