From 305252d3354059ab8cc066e89ee0845dcca2b6b5 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Thu, 3 Mar 2016 08:54:07 -0800 Subject: [PATCH] Recognize object rest properties as binding identifiers - fixes T7178 --- .../test/fixtures/regression/T7178/actual.js | 9 +++++++++ .../test/fixtures/regression/T7178/expected.js | 17 +++++++++++++++++ .../test/fixtures/regression/T7178/options.json | 7 +++++++ packages/babel-types/src/retrievers.js | 2 +- 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/actual.js create mode 100644 packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/expected.js create mode 100644 packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/options.json diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/actual.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/actual.js new file mode 100644 index 0000000000..4d3e306537 --- /dev/null +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/actual.js @@ -0,0 +1,9 @@ +import props from "props"; + +console.log(props); + +(function(){ + const { ...props } = this.props; + + console.log(props); +})(); diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/expected.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/expected.js new file mode 100644 index 0000000000..d2cc0c9bc0 --- /dev/null +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/expected.js @@ -0,0 +1,17 @@ +"use strict"; + +var _props = require("props"); + +var _props2 = _interopRequireDefault(_props); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +console.log(_props2.default); + +(function () { + const props = _objectWithoutProperties(this.props, []); + + console.log(props); +})(); diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/options.json b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/options.json new file mode 100644 index 0000000000..b765fa3a8f --- /dev/null +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/regression/T7178/options.json @@ -0,0 +1,7 @@ +{ + "plugins": [ + "transform-es2015-modules-commonjs", + "transform-es2015-destructuring", + "transform-object-rest-spread" + ] +} diff --git a/packages/babel-types/src/retrievers.js b/packages/babel-types/src/retrievers.js index 8d35de850a..5014e59109 100644 --- a/packages/babel-types/src/retrievers.js +++ b/packages/babel-types/src/retrievers.js @@ -91,7 +91,7 @@ getBindingIdentifiers.keys = { RestElement: ["argument"], UpdateExpression: ["argument"], - SpreadProperty: ["argument"], + RestProperty: ["argument"], ObjectProperty: ["value"], AssignmentPattern: ["left"],