diff --git a/src/babel/traversal/scope.js b/src/babel/traversal/scope.js index d27b18db60..dba85887cc 100644 --- a/src/babel/traversal/scope.js +++ b/src/babel/traversal/scope.js @@ -74,8 +74,15 @@ var renameVisitor = explode({ Identifier(node, parent, scope, state) { if (this.isReferenced() && node.name === state.oldName) { if (this.parentPath.isProperty() && this.key === "key" && parent.shorthand) { + var value = t.identifier(state.newName);; + + if (parent.value === state.binding) { + state.info.identifier = state.binding = value; + } + parent.shorthand = false; - parent.value = t.identifier(state.newName); + parent.value = value; + parent.key = t.identifier(state.oldName); } else { node.name = state.newName; } diff --git a/test/core/fixtures/transformation/spec.function-name/collisions/actual.js b/test/core/fixtures/transformation/spec.function-name/collisions/actual.js new file mode 100644 index 0000000000..de7e0227dc --- /dev/null +++ b/test/core/fixtures/transformation/spec.function-name/collisions/actual.js @@ -0,0 +1,9 @@ +var obj = { + search: function({search}) { + console.log(search); + } +}; + +function search({search}) { + console.log(search); +} diff --git a/test/core/fixtures/transformation/spec.function-name/collisions/expected.js b/test/core/fixtures/transformation/spec.function-name/collisions/expected.js new file mode 100644 index 0000000000..60e9fd0c92 --- /dev/null +++ b/test/core/fixtures/transformation/spec.function-name/collisions/expected.js @@ -0,0 +1,15 @@ +"use strict"; + +var obj = { + search: function search(_ref) { + var _search = _ref.search; + + console.log(_search); + } +}; + +function search(_ref2) { + var search = _ref2.search; + + console.log(search); +}