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"] +}