{"action":"opened","issue":{"url":"https://api.github.com/repos/eslint/eslint/issues/3042","labels_url":"https://api.github.com/repos/eslint/eslint/issues/3042/labels{/name}","comments_url":"https://api.github.com/repos/eslint/eslint/issues/3042/comments","events_url":"https://api.github.com/repos/eslint/eslint/issues/3042/events","html_url":"https://github.com/eslint/eslint/issues/3042","id":95612893,"number":3042,"title":"no-dupe-keys breaks with experimentalObjectRestSpread & AssignmentExpression","user":{"login":"gre","id":211411,"avatar_url":"https://avatars.githubusercontent.com/u/211411?v=3","gravatar_id":"","url":"https://api.github.com/users/gre","html_url":"https://github.com/gre","followers_url":"https://api.github.com/users/gre/followers","following_url":"https://api.github.com/users/gre/following{/other_user}","gists_url":"https://api.github.com/users/gre/gists{/gist_id}","starred_url":"https://api.github.com/users/gre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gre/subscriptions","organizations_url":"https://api.github.com/users/gre/orgs","repos_url":"https://api.github.com/users/gre/repos","events_url":"https://api.github.com/users/gre/events{/privacy}","received_events_url":"https://api.github.com/users/gre/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-07-17T08:32:00Z","updated_at":"2015-07-17T08:32:00Z","closed_at":null,"body":"After the https://github.com/eslint/espree/issues/167 fix,\r\n\r\nI still can't make the experimentalObjectRestSpread working with AssignmentExpression when using with `no-dupe-keys` rule. **if I disable no-dupe-keys rule, the error disappear**, so I think this is related to this rule.\r\n\r\nHere is what happens to me:\r\n\r\n$ npm install -g eslint@1.0.0-rc-1     # this grabs espree 2.2.2\r\n...\r\n$ eslint test.js\r\n/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/lib/rules/no-dupe-keys.js:25\r\n                var keyName = property.key.name || property.key.value,\r\n                                          ^\r\nTypeError: Cannot read property 'name' of undefined\r\n    at /Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/lib/rules/no-dupe-keys.js:25:43\r\n    at Array.forEach (native)\r\n    at EventEmitter.ObjectExpression (/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/lib/rules/no-dupe-keys.js:24:29)\r\n    at emitOne (events.js:82:20)\r\n    at EventEmitter.emit (events.js:169:7)\r\n    at Controller.controller.traverse.enter (/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/lib/eslint.js:790:25)\r\n    at Controller.__execute (/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/node_modules/estraverse/estraverse.js:397:31)\r\n    at Controller.traverse (/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/node_modules/estraverse/estraverse.js:495:28)\r\n    at EventEmitter.module.exports.api.verify (/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/lib/eslint.js:783:24)\r\n    at processText (/Users/gre/.nvm/versions/io.js/v2.3.4/lib/node_modules/eslint/lib/cli-engine.js:199:27)\r\ntest.js\r\n\r\nconst a = { foo: {} };\r\n\r\nconst b = {\r\n  ...a.foo,\r\n  a\r\n};\r\n.eslintrc\r\n\r\n{\r\n    \"rules\": {\r\n        \"indent\": [\r\n            2,\r\n            4\r\n        ],\r\n        \"quotes\": [\r\n            2,\r\n            \"double\"\r\n        ],\r\n        \"linebreak-style\": [\r\n            2,\r\n            \"unix\"\r\n        ],\r\n        \"semi\": [\r\n            2,\r\n            \"always\"\r\n        ]\r\n    },\r\n    \"env\": {\r\n        \"es6\": true,\r\n        \"browser\": true\r\n    },\r\n    \"extends\": \"eslint:recommended\",\r\n    \"ecmaFeatures\": {\r\n      \"jsx\": true,\r\n      \"experimentalObjectRestSpread\": true\r\n    }\r\n}\r\n```\r\n\r\nThanks"}}