From 5ac4dc0541e32207943b9d4047468af0878b939a Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 2 Mar 2015 17:16:10 +1100 Subject: [PATCH] don't evaluate ArrayExpressions --- src/babel/types/index.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/babel/types/index.js b/src/babel/types/index.js index 9e851c7efa..931d1a8aad 100644 --- a/src/babel/types/index.js +++ b/src/babel/types/index.js @@ -887,25 +887,17 @@ t.evaluate = function (node) { } if (t.isUnaryExpression(node, { prefix: true })) { + var arg = evaluate(node.argument); switch (node.operator) { case "void": return undefined; - case "!": return !evaluate(node.argument); - case "+": return +evaluate(node.argument); - case "-": return -evaluate(node.argument); + case "!": return !arg; + case "+": return +arg; + case "-": return -arg; } } - if (t.isArrayExpression(node)) { - // possible perf issues - could deopt on X elements - var values = []; - for (var i = 0; i < node.elements.length; i++) { - values.push(evaluate(node.elements[i])); - } - return values; - } - - if (t.isObjectExpression(node)) { - // todo: deopt on mutable computed property keys etc + if (t.isArrayExpression(node) || t.isObjectExpression(node)) { + // we could evaluate these but it's probably impractical and not very useful } if (t.isLogicalExpression(node)) {