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 b54355ab9a..dbc357be07 100644 --- a/packages/babel-plugin-transform-object-rest-spread/src/index.js +++ b/packages/babel-plugin-transform-object-rest-spread/src/index.js @@ -10,15 +10,13 @@ export default function ({ types: t }) { return foundRestProperty; } - function hasSpread(path) { - let foundSpreadProperty = false; - path.traverse({ - SpreadProperty() { - foundSpreadProperty = true; - path.stop(); + function hasSpread(node) { + for (let prop of (node.properties)) { + if (t.isSpreadProperty(prop)) { + return true; } - }); - return foundSpreadProperty; + } + return false; } function createObjectSpread(file, props, objRef) { @@ -225,7 +223,7 @@ export default function ({ types: t }) { }, // var a = { ...b, ...c } ObjectExpression(path, file) { - if (!hasSpread(path)) return; + if (!hasSpread(path.node)) return; let useBuiltIns = file.opts.useBuiltIns || false; if (typeof useBuiltIns !== "boolean") { 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 1f6d4a3487..1b1a3defba 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 @@ -2,4 +2,4 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument z = _extends({ x }, y); -z = _extends({ x, w: { ...y } }); +z = { x, w: _extends({}, y) };