From f84faaad87ae3950e9aef845ca62de853f5a9f54 Mon Sep 17 00:00:00 2001 From: JBYoshi <12983479+JBYoshi@users.noreply.github.com> Date: Sun, 1 Jan 2023 22:03:45 -0500 Subject: [PATCH] Fix cases where the brackets contain a variable. --- packages/babel-traverse/src/path/evaluation.ts | 6 +++--- packages/babel-traverse/test/evaluation.js | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/babel-traverse/src/path/evaluation.ts b/packages/babel-traverse/src/path/evaluation.ts index 87e93655034b..6b35af8e6903 100644 --- a/packages/babel-traverse/src/path/evaluation.ts +++ b/packages/babel-traverse/src/path/evaluation.ts @@ -172,11 +172,11 @@ function _evaluate(path: NodePath, state: State): any { const type = typeof value; let key = null; - if (property.isIdentifier()) { - key = property.node.name; - } else if (path.node.computed) { + if (path.node.computed) { key = evaluateCached(property, state); if (!state.confident) return; + } else if (property.isIdentifier()) { + key = property.node.name; } if ( (type === "number" || type === "string") && diff --git a/packages/babel-traverse/test/evaluation.js b/packages/babel-traverse/test/evaluation.js index bd21be347521..07897748e71c 100644 --- a/packages/babel-traverse/test/evaluation.js +++ b/packages/babel-traverse/test/evaluation.js @@ -119,6 +119,11 @@ describe("evaluation", function () { .get("body.0.declarations.0.init") .evaluate().value, ).toBe("w"); + expect( + getPath("var length = 1; var x = 'abc'[length];") + .get("body.1.declarations.0.init") + .evaluate().value, + ).toBe("b"); const member_expr = getPath( "var x = Math.min(2,Math.max(3,4));var y = Math.random();", );