diff --git a/packages/babel-helper-simple-access/src/index.js b/packages/babel-helper-simple-access/src/index.js index 4d3ec6a922..b26404223c 100644 --- a/packages/babel-helper-simple-access/src/index.js +++ b/packages/babel-helper-simple-access/src/index.js @@ -29,8 +29,9 @@ const simpleAssignmentVisitor = { (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) ) { // ++i => (i += 1); + const operator = path.node.operator == "++" ? "+=" : "-="; path.replaceWith( - t.assignmentExpression("+=", arg.node, t.numericLiteral(1)), + t.assignmentExpression(operator, arg.node, t.numericLiteral(1)), ); } else { const varName = path.scope.generateDeclaredUidIdentifier("old").name; diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/options.json b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/options.json new file mode 100644 index 0000000000..ab27afaee3 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", ["transform-modules-commonjs"]] +} diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/negative/input.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/negative/input.js new file mode 100644 index 0000000000..4b99ecd9c2 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/negative/input.js @@ -0,0 +1,7 @@ +export let diffLevel = 0; + +export function diff() { + if (!--diffLevel) { + console.log("hey"); + } +} diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/negative/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/negative/output.js new file mode 100644 index 0000000000..213a885614 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/negative/output.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true, +}); +exports.diff = diff; +exports.diffLevel = void 0; +let diffLevel = 0; +exports.diffLevel = diffLevel; + +function diff() { + if (!(exports.diffLevel = diffLevel = diffLevel - 1)) { + console.log("hey"); + } +} diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/positive/input.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/positive/input.js new file mode 100644 index 0000000000..a815395f6a --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/positive/input.js @@ -0,0 +1,7 @@ +export let diffLevel = 0; + +export function diff() { + if (!++diffLevel) { + console.log("hey"); + } +} diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/positive/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/positive/output.js new file mode 100644 index 0000000000..72f1c177cf --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/update-expression/suffix/positive/output.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true, +}); +exports.diff = diff; +exports.diffLevel = void 0; +let diffLevel = 0; +exports.diffLevel = diffLevel; + +function diff() { + if (!(exports.diffLevel = diffLevel = diffLevel + 1)) { + console.log("hey"); + } +}