From 309540b129026bbd99ac7e15d89a4f2feb16b893 Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Thu, 23 May 2019 08:58:55 +0800 Subject: [PATCH 1/2] fix destructuring rest with template literal --- packages/babel-plugin-transform-destructuring/src/index.js | 2 ++ .../test/fixtures/destructuring/issue-9834/input.js | 6 ++++++ .../test/fixtures/destructuring/issue-9834/output.js | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js create mode 100644 packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js diff --git a/packages/babel-plugin-transform-destructuring/src/index.js b/packages/babel-plugin-transform-destructuring/src/index.js index 4213aa5517e9..04cb37b4afa9 100644 --- a/packages/babel-plugin-transform-destructuring/src/index.js +++ b/packages/babel-plugin-transform-destructuring/src/index.js @@ -203,6 +203,8 @@ export default declare((api, options) => { const key = prop.key; if (t.isIdentifier(key) && !prop.computed) { keys.push(t.stringLiteral(key.name)); + } else if (t.isTemplateLiteral(prop.key)) { + keys.push(t.cloneNode(prop.key)); } else if (t.isLiteral(key)) { keys.push(t.stringLiteral(String(key.value))); } else { diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js new file mode 100644 index 000000000000..052c1dca05f6 --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js @@ -0,0 +1,6 @@ +function testOmitProperties(initialObject, testKey) { + var { + [`${testKey}s`]: family, + ...rest + } = initialObject; +} diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js new file mode 100644 index 000000000000..5629ced6fed3 --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js @@ -0,0 +1,4 @@ +function testOmitProperties(initialObject, testKey) { + var family = initialObject[`${testKey}s`], + rest = babelHelpers.objectWithoutProperties(initialObject, [`${testKey}s`]); +} From 2f45e7d3b99888faa70131107f76e2e75e265e1e Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Thu, 23 May 2019 22:50:55 +0800 Subject: [PATCH 2/2] update test --- .../fixtures/destructuring/issue-9834/input.js | 16 ++++++++++------ .../fixtures/destructuring/issue-9834/output.js | 14 ++++++++++---- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js index 052c1dca05f6..66679d7f052d 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/input.js @@ -1,6 +1,10 @@ -function testOmitProperties(initialObject, testKey) { - var { - [`${testKey}s`]: family, - ...rest - } = initialObject; -} +const input = {}; + +const { + given_name: givenName, + 'last_name': lastName, + [`country`]: country, + [prefix + 'state']: state, + [`${prefix}consents`]: consents, + ...rest +} = input; diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js index 5629ced6fed3..a830257bda3c 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/issue-9834/output.js @@ -1,4 +1,10 @@ -function testOmitProperties(initialObject, testKey) { - var family = initialObject[`${testKey}s`], - rest = babelHelpers.objectWithoutProperties(initialObject, [`${testKey}s`]); -} +var input = {}; + +var _ref = prefix + 'state', + _ref2 = `${prefix}consents`, + givenName = input.given_name, + lastName = input['last_name'], + country = input[`country`], + state = input[_ref], + consents = input[_ref2], + rest = babelHelpers.objectWithoutProperties(input, ["given_name", "last_name", `country`, _ref, _ref2].map(babelHelpers.toPropertyKey));