From def1f8823e4f969d01c16dda079010cc4cb79f37 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 13 Aug 2015 15:32:50 +0100 Subject: [PATCH] don't statically evaluate Math.random - fixes babel-plugins/babel-plugin-constant-folding#1 --- packages/babel-traverse/src/path/evaluation.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/babel-traverse/src/path/evaluation.js b/packages/babel-traverse/src/path/evaluation.js index 36c6f159f6..cd2024004b 100644 --- a/packages/babel-traverse/src/path/evaluation.js +++ b/packages/babel-traverse/src/path/evaluation.js @@ -1,6 +1,7 @@ /* eslint eqeqeq: 0 */ const VALID_CALLEES = ["String", "Number", "Math"]; +const INVALID_METHODS = ["random"]; /** * Walk the input `node` and statically evaluate if it's truthy. @@ -180,7 +181,7 @@ export function evaluate(): { confident: boolean; value: any } { var property = callee.get("property"); // Math.min(1, 2) - if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0) { + if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0 && INVALID_METHODS.indexOf(property.node.name) < 0) { context = global[object.node.name]; func = context[property.node.name]; }