From f5b5d8f337df81e2f32ce0dc35e326de9813fda0 Mon Sep 17 00:00:00 2001 From: Moti Zilberman Date: Wed, 5 Oct 2016 12:10:12 +0300 Subject: [PATCH] Avoid repeating impure (template) literals when desugaring **= (#4403) (#4672) --- .../babel-helper-explode-assignable-expression/src/index.js | 2 +- .../test/fixtures/regression/4403/actual.js | 2 ++ .../test/fixtures/regression/4403/expected.js | 3 +++ .../test/fixtures/regression/4403/options.json | 3 +++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/actual.js create mode 100644 packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js create mode 100644 packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/options.json diff --git a/packages/babel-helper-explode-assignable-expression/src/index.js b/packages/babel-helper-explode-assignable-expression/src/index.js index c854e1c382..8ffdd95fa2 100644 --- a/packages/babel-helper-explode-assignable-expression/src/index.js +++ b/packages/babel-helper-explode-assignable-expression/src/index.js @@ -41,7 +41,7 @@ function getObjRef(node, nodes, file, scope) { function getPropRef(node, nodes, file, scope) { let prop = node.property; let key = t.toComputedKey(node, prop); - if (t.isLiteral(key)) return key; + if (t.isLiteral(key) && t.isPureish(key)) return key; let temp = scope.generateUidIdentifierBasedOnNode(prop); nodes.push(t.variableDeclaration("var", [ diff --git a/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/actual.js b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/actual.js new file mode 100644 index 0000000000..62ddaa92b9 --- /dev/null +++ b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/actual.js @@ -0,0 +1,2 @@ +var a, b; +a[`${b++}`] **= 1; diff --git a/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js new file mode 100644 index 0000000000..dbf2e9bdb1 --- /dev/null +++ b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js @@ -0,0 +1,3 @@ +var a, b; +var _ref = `${ b++ }`; +a[_ref] = Math.pow(a[_ref], 1) diff --git a/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/options.json b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/options.json new file mode 100644 index 0000000000..a6b3a4360b --- /dev/null +++ b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-exponentiation-operator"] +}