diff --git a/lib/6to5/transformation/transformers/deprecated.json b/lib/6to5/transformation/transformers/deprecated.json index 1b2ac7ff1e..8cc67d67b4 100644 --- a/lib/6to5/transformation/transformers/deprecated.json +++ b/lib/6to5/transformation/transformers/deprecated.json @@ -12,7 +12,8 @@ "generatorComprehension": "es7.comprehensions", "arrowFunctions": "es6.arrowFunctions", "classes": "es6.classes", - "objectSpread": "es7.objectSpread", + "objectSpread": "es7.objectRestSpread", + "es7.objectSpread": "es7.objectRestSpread", "exponentiationOperator": "es7.exponentiationOperator", "spread": "es6.spread", "templateLiterals": "es6.templateLiterals", diff --git a/lib/6to5/transformation/transformers/es7/object-spread.js b/lib/6to5/transformation/transformers/es7/object-rest-spread.js similarity index 63% rename from lib/6to5/transformation/transformers/es7/object-spread.js rename to lib/6to5/transformation/transformers/es7/object-rest-spread.js index 3d3deef6d1..2667946edd 100644 --- a/lib/6to5/transformation/transformers/es7/object-spread.js +++ b/lib/6to5/transformation/transformers/es7/object-rest-spread.js @@ -6,18 +6,21 @@ var t = require("../../../types"); exports.experimental = true; -exports.ObjectExpression = function (node, parent, scope, context, file) { - var hasSpread = false; - var i; - var prop; - for (i = 0; i < node.properties.length; i++) { - prop = node.properties[i]; - if (t.isSpreadProperty(prop)) { - hasSpread = true; - break; +exports.manipulateOptions = function (opts) { + opts.whitelist.push("es6.destructuring"); +}; + +var hasSpread = function (node) { + for (var i = 0; i < node.properties.length; i++) { + if (t.isSpreadProperty(node.properties[i])) { + return true; } } - if (!hasSpread) return; + return false; +}; + +exports.ObjectExpression = function (node, parent, scope, context, file) { + if (!hasSpread(node)) return; var args = []; var props = []; @@ -28,8 +31,8 @@ exports.ObjectExpression = function (node, parent, scope, context, file) { props = []; }; - for (i = 0; i < node.properties.length; i++) { - prop = node.properties[i]; + for (var i = 0; i < node.properties.length; i++) { + var prop = node.properties[i]; if (t.isSpreadProperty(prop)) { push(); args.push(prop.argument); diff --git a/lib/6to5/transformation/transformers/index.js b/lib/6to5/transformation/transformers/index.js index 9a631e1dc7..eb35634837 100644 --- a/lib/6to5/transformation/transformers/index.js +++ b/lib/6to5/transformation/transformers/index.js @@ -27,7 +27,7 @@ module.exports = { asyncToGenerator: require("./other/async-to-generator"), bluebirdCoroutines: require("./other/bluebird-coroutines"), - "es7.objectSpread": require("./es7/object-spread"), + "es7.objectRestSpread": require("./es7/object-rest-spread"), "es7.exponentiationOperator": require("./es7/exponentiation-operator"), "es6.spread": require("./es6/spread"), "es6.templateLiterals": require("./es6/template-literals"),