From 88bc28c414f30e4b35344792403fd2d1d2a85f3b Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 8 Dec 2016 19:30:50 -0500 Subject: [PATCH] Fix nested object spread (#4974) --- packages/babel-plugin-transform-object-rest-spread/src/index.js | 2 ++ .../test/fixtures/object-spread/assignment/actual.js | 2 ++ .../test/fixtures/object-spread/assignment/expected.js | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/babel-plugin-transform-object-rest-spread/src/index.js b/packages/babel-plugin-transform-object-rest-spread/src/index.js index 7d04ee311d..b54355ab9a 100644 --- a/packages/babel-plugin-transform-object-rest-spread/src/index.js +++ b/packages/babel-plugin-transform-object-rest-spread/src/index.js @@ -4,6 +4,7 @@ export default function ({ types: t }) { path.traverse({ RestProperty() { foundRestProperty = true; + path.stop(); } }); return foundRestProperty; @@ -14,6 +15,7 @@ export default function ({ types: t }) { path.traverse({ SpreadProperty() { foundSpreadProperty = true; + path.stop(); } }); return foundSpreadProperty; diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/actual.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/actual.js index 8d610842d8..6f0367fb7c 100644 --- a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/actual.js +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/actual.js @@ -1 +1,3 @@ z = { x, ...y }; + +z = { x, w: { ...y } }; diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/expected.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/expected.js index 5e42763fce..1f6d4a3487 100644 --- a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/expected.js +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-spread/assignment/expected.js @@ -1,3 +1,5 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; z = _extends({ x }, y); + +z = _extends({ x, w: { ...y } });