From cc6959e1fa23d27d3df06f1476556f83f47a32ca Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Thu, 4 May 2017 18:44:03 +0200 Subject: [PATCH] feat: WIP assignements --- .../src/index.js | 26 +++++++++++++------ .../fixtures/general/assignement/actual.js | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 packages/babel-plugin-transform-optional-chaining/test/fixtures/general/assignement/actual.js diff --git a/packages/babel-plugin-transform-optional-chaining/src/index.js b/packages/babel-plugin-transform-optional-chaining/src/index.js index 73058c520d..b856e0d7a7 100644 --- a/packages/babel-plugin-transform-optional-chaining/src/index.js +++ b/packages/babel-plugin-transform-optional-chaining/src/index.js @@ -37,27 +37,37 @@ export default function ({ types: t }) { path.scope.push({ id }); } - let remplacement; + if (t.isAssignmentExpression(path.parent)) { - if (t.isCallExpression(path.parent)) { + const remplacement = createCondition( + t.identifier("temp_here_please"), + object, + property, + t.identifier("undefined"), + ); - remplacement = createCondition( + path.parentPath.replaceWith(remplacement); + } else if (t.isCallExpression(path.parent)) { + + const remplacement = createCondition( state.optionalTemp, object, property, - t.callExpression(t.identifier("Function"), []) + t.callExpression(t.identifier("Function"), []), ); + + path.replaceWith(remplacement); } else { - remplacement = createCondition( + const remplacement = createCondition( state.optionalTemp, object, property, - t.identifier("undefined") + t.identifier("undefined"), ); - } - path.replaceWith(remplacement); + path.replaceWith(remplacement); + } }, }, }; diff --git a/packages/babel-plugin-transform-optional-chaining/test/fixtures/general/assignement/actual.js b/packages/babel-plugin-transform-optional-chaining/test/fixtures/general/assignement/actual.js new file mode 100644 index 0000000000..bf7a81758e --- /dev/null +++ b/packages/babel-plugin-transform-optional-chaining/test/fixtures/general/assignement/actual.js @@ -0,0 +1 @@ +a?.b = 42