From 54d9732d0b74bd242a0872f6d48bbc9025059ded Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Mon, 5 Jun 2017 23:48:20 -0400 Subject: [PATCH] Test Update and Unary expressions --- .../src/index.js | 5 ++++- .../test/fixtures/execute/unary.js | 17 +++++++++++++++++ .../test/fixtures/execute/update.js | 14 ++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/unary.js create mode 100644 packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/update.js diff --git a/packages/babel-plugin-transform-optional-chaining/src/index.js b/packages/babel-plugin-transform-optional-chaining/src/index.js index d48492ff9e..3e93ea52a2 100644 --- a/packages/babel-plugin-transform-optional-chaining/src/index.js +++ b/packages/babel-plugin-transform-optional-chaining/src/index.js @@ -92,7 +92,10 @@ export default function ({ types: t }) { if (path.key == "callee" && (parentPath.isCallExpression() || parentPath.isNewExpression())) { return false; } - if (path.key == "argument" && parentPath.isUnaryExpression()) { + if (path.key == "argument" && parentPath.isUpdateExpression()) { + return false; + } + if (path.key == "argument" && parentPath.isUnaryExpression({ operator: "delete" })) { return false; } diff --git a/packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/unary.js b/packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/unary.js new file mode 100644 index 0000000000..8d71fe89c7 --- /dev/null +++ b/packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/unary.js @@ -0,0 +1,17 @@ +const obj = { + a: { + b: 0, + }, +}; + +let test = +obj?.a?.b; +assert.equal(test, 0); + +test = +obj?.a.b; +assert.equal(test, 0); + +test = +obj?.b?.b; +assert.isNaN(test); + +test = +obj?.b?.b; +assert.isNaN(test); diff --git a/packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/update.js b/packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/update.js new file mode 100644 index 0000000000..06d1024e4d --- /dev/null +++ b/packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/update.js @@ -0,0 +1,14 @@ +const obj = { + a: { + b: 0, + }, +}; + +obj?.a.b++; +assert.equal(obj.a.b, 1); + +obj?.a?.b++; +assert.equal(obj.a.b, 2); + +obj?.b?.b++; +assert.equal(obj.b, undefined);