fix computed member expressions in playground memoization

This commit is contained in:
Sebastian McKenzie
2015-01-15 02:48:22 +11:00
parent 41ff1d4ace
commit 6db7fce543

View File

@@ -6,9 +6,11 @@ var isMemo = function (node) {
return is;
};
var getPropRef = function (nodes, prop, file, scope) {
if (t.isIdentifier(prop)) {
return t.literal(prop.name);
var getPropRef = function (nodes, member, file, scope) {
var prop = member.property;
var key = t.toComputedKey(member, member.property);
if (t.isLiteral(key)) {
return key;
} else {
var temp = scope.generateUidBasedOnNode(prop, file);
nodes.push(t.variableDeclaration("var", [
@@ -54,7 +56,7 @@ exports.ExpressionStatement = function (node, parent, file, scope) {
var left = expr.left;
var obj = getObjRef(nodes, left.object, file, scope);
var prop = getPropRef(nodes, left.property, file, scope);
var prop = getPropRef(nodes, left, file, scope);
nodes.push(t.ifStatement(
buildHasOwn(obj, prop, file),
@@ -72,7 +74,7 @@ exports.AssignmentExpression = function (node, parent, file, scope) {
var left = node.left;
var obj = getObjRef(nodes, left.object, file, scope);
var prop = getPropRef(nodes, left.property, file, scope);
var prop = getPropRef(nodes, left, file, scope);
nodes.push(t.logicalExpression(
"&&",