babel-core
Version:
Turn ES6 code into readable vanilla ES5 with source maps
47 lines (32 loc) • 1.16 kB
JavaScript
;
var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
exports.MethodDefinition = MethodDefinition;
var t = _interopRequireWildcard(require("../../../types"));
var playground = exports.playground = true;
var visitor = {
enter: function enter(node, parent, scope, state) {
if (this.isFunction()) return this.skip();
if (this.isReturnStatement() && node.argument) {
node.argument = t.memberExpression(t.callExpression(state.file.addHelper("define-property"), [t.thisExpression(), state.key, node.argument]), state.key, true);
}
}
};
function MethodDefinition(node, parent, scope, file) {
if (node.kind !== "memo") return;
node.kind = "get";
console.error("Object getter memoization is deprecated and will be removed in 5.0.0");
var value = node.value;
t.ensureBlock(value);
var key = node.key;
if (t.isIdentifier(key) && !node.computed) {
key = t.literal(key.name);
}
var state = {
key: key,
file: file
};
scope.traverse(value, visitor, state);
return node;
}
exports.Property = MethodDefinition;
exports.__esModule = true;