{"action":"created","comment":{"url":"https://api.github.com/repos/facebook/react/pulls/comments/31769915","id":31769915,"diff_hunk":"@@ -128,49 +144,46 @@ function validatePropertyKey(name, element, parentType) {\n  * Shared warning and monitoring code for the key warnings.\n  *\n  * @internal\n- * @param {string} message The base warning that gets output.\n+ * @param {string} messageType A key used for de-duping warnings.\n  * @param {ReactElement} element Component that requires a key.\n  * @param {*} parentType element's parent's type.\n+ * @returns {?object} A set of addendums to use in the warning message, or null\n+ * if the warning has already been shown before (and shouldn't be shown again).\n  */\n-function warnAndMonitorForKeyUse(message, element, parentType) {\n+function getAddendumsForKeyUse(messageType, element, parentType) {\n   var ownerName = getCurrentOwnerDisplayName();\n   var parentName = typeof parentType === 'string' ?\n     parentType : parentType.displayName || parentType.name;\n \n   var useName = ownerName || parentName;\n-  var memoizer = ownerHasKeyUseWarning[message] || (\n-    ownerHasKeyUseWarning[message] = {}\n+  var memoizer = ownerHasKeyUseWarning[messageType] || (\n+    ownerHasKeyUseWarning[messageType] = {}\n   );\n-  if (memoizer.hasOwnProperty(useName)) {\n-    return;\n+  if (memoizer[useName]) {\n+    return null;\n   }\n   memoizer[useName] = true;\n \n-  var parentOrOwnerAddendum =\n-    ownerName ? ` Check the render method of ${ownerName}.` :\n-    parentName ? ` Check the React.render call using <${parentName}>.` :\n-    '';\n+  var addendums = {\n+    parentOrOwner:\n+      ownerName ? ` Check the render method of ${ownerName}.` :\n+      parentName ? ` Check the React.render call using <${parentName}>.` :\n+      null,\n+    url: ' See https://fb.me/react-warning-keys for more information.',","path":"src/isomorphic/classic/element/ReactElementValidator.js","position":85,"original_position":85,"commit_id":"357e18b2a1ef6f12a3f49c1a3dab53c0fe150865","original_commit_id":"357e18b2a1ef6f12a3f49c1a3dab53c0fe150865","user":{"login":"spicyj","id":6820,"avatar_url":"https://avatars.githubusercontent.com/u/6820?v=3","gravatar_id":"","url":"https://api.github.com/users/spicyj","html_url":"https://github.com/spicyj","followers_url":"https://api.github.com/users/spicyj/followers","following_url":"https://api.github.com/users/spicyj/following{/other_user}","gists_url":"https://api.github.com/users/spicyj/gists{/gist_id}","starred_url":"https://api.github.com/users/spicyj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spicyj/subscriptions","organizations_url":"https://api.github.com/users/spicyj/orgs","repos_url":"https://api.github.com/users/spicyj/repos","events_url":"https://api.github.com/users/spicyj/events{/privacy}","received_events_url":"https://api.github.com/users/spicyj/received_events","type":"User","site_admin":false},"body":"can you add `childOwner: null,` here for consistency?","created_at":"2015-06-04T21:54:55Z","updated_at":"2015-06-04T21:54:55Z","html_url":"https://github.com/facebook/react/pull/4029#discussion_r31769915","pull_request_url":"https://api.github.com/repos/facebook/react/pulls/4029","_links":{"self":{"href":"https://api.github.com/repos/facebook/react/pulls/comments/31769915"},"html":{"href":"https://github.com/facebook/react/pull/4029#discussion_r31769915"},"pull_request":{"href":"https://api.github.com/repos/facebook/react/pulls/4029"}}},"pull_request":{"url":"https://api.github.com/repos/facebook/react/pulls/4029","id":36977682,"html_url":"https://github.com/facebook/react/pull/4029","diff_url":"https://github.com/facebook/react/pull/4029.diff","patch_url":"https://github.com/facebook/react/pull/4029.patch","issue_url":"https://api.github.com/repos/facebook/react/issues/4029","number":4029,"state":"open","locked":false,"title":"Fix problems with/improve warning and invariant rules (take two)","user":{"login":"PiPeep","id":180404,"avatar_url":"https://avatars.githubusercontent.com/u/180404?v=3","gravatar_id":"","url":"https://api.github.com/users/PiPeep","html_url":"https://github.com/PiPeep","followers_url":"https://api.github.com/users/PiPeep/followers","following_url":"https://api.github.com/users/PiPeep/following{/other_user}","gists_url":"https://api.github.com/users/PiPeep/gists{/gist_id}","starred_url":"https://api.github.com/users/PiPeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PiPeep/subscriptions","organizations_url":"https://api.github.com/users/PiPeep/orgs","repos_url":"https://api.github.com/users/PiPeep/repos","events_url":"https://api.github.com/users/PiPeep/events{/privacy}","received_events_url":"https://api.github.com/users/PiPeep/received_events","type":"User","site_admin":false},"body":"See the post-merge discussion following #4021. Changes are broken up into three distinct parts to make review easier. Probably the most controversial commit is the last one.","created_at":"2015-06-04T21:00:12Z","updated_at":"2015-06-04T21:54:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b877eefe02614f0a4ecc7d0371914dac383762b8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/facebook/react/pulls/4029/commits","review_comments_url":"https://api.github.com/repos/facebook/react/pulls/4029/comments","review_comment_url":"https://api.github.com/repos/facebook/react/pulls/comments{/number}","comments_url":"https://api.github.com/repos/facebook/react/issues/4029/comments","statuses_url":"https://api.github.com/repos/facebook/react/statuses/357e18b2a1ef6f12a3f49c1a3dab53c0fe150865","head":{"label":"PiPeep:warning-invariant-rules-take-two","ref":"warning-invariant-rules-take-two","sha":"357e18b2a1ef6f12a3f49c1a3dab53c0fe150865","user":{"login":"PiPeep","id":180404,"avatar_url":"https://avatars.githubusercontent.com/u/180404?v=3","gravatar_id":"","url":"https://api.github.com/users/PiPeep","html_url":"https://github.com/PiPeep","followers_url":"https://api.github.com/users/PiPeep/followers","following_url":"https://api.github.com/users/PiPeep/following{/other_user}","gists_url":"https://api.github.com/users/PiPeep/gists{/gist_id}","starred_url":"https://api.github.com/users/PiPeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PiPeep/subscriptions","organizations_url":"https://api.github.com/users/PiPeep/orgs","repos_url":"https://api.github.com/users/PiPeep/repos","events_url":"https://api.github.com/users/PiPeep/events{/privacy}","received_events_url":"https://api.github.com/users/PiPeep/received_events","type":"User","site_admin":false},"repo":{"id":36329454,"name":"react","full_name":"PiPeep/react","owner":{"login":"PiPeep","id":180404,"avatar_url":"https://avatars.githubusercontent.com/u/180404?v=3","gravatar_id":"","url":"https://api.github.com/users/PiPeep","html_url":"https://github.com/PiPeep","followers_url":"https://api.github.com/users/PiPeep/followers","following_url":"https://api.github.com/users/PiPeep/following{/other_user}","gists_url":"https://api.github.com/users/PiPeep/gists{/gist_id}","starred_url":"https://api.github.com/users/PiPeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PiPeep/subscriptions","organizations_url":"https://api.github.com/users/PiPeep/orgs","repos_url":"https://api.github.com/users/PiPeep/repos","events_url":"https://api.github.com/users/PiPeep/events{/privacy}","received_events_url":"https://api.github.com/users/PiPeep/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/PiPeep/react","description":"A declarative, efficient, and flexible JavaScript library for building user interfaces.","fork":true,"url":"https://api.github.com/repos/PiPeep/react","forks_url":"https://api.github.com/repos/PiPeep/react/forks","keys_url":"https://api.github.com/repos/PiPeep/react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PiPeep/react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PiPeep/react/teams","hooks_url":"https://api.github.com/repos/PiPeep/react/hooks","issue_events_url":"https://api.github.com/repos/PiPeep/react/issues/events{/number}","events_url":"https://api.github.com/repos/PiPeep/react/events","assignees_url":"https://api.github.com/repos/PiPeep/react/assignees{/user}","branches_url":"https://api.github.com/repos/PiPeep/react/branches{/branch}","tags_url":"https://api.github.com/repos/PiPeep/react/tags","blobs_url":"https://api.github.com/repos/PiPeep/react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PiPeep/react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PiPeep/react/git/refs{/sha}","trees_url":"https://api.github.com/repos/PiPeep/react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PiPeep/react/statuses/{sha}","languages_url":"https://api.github.com/repos/PiPeep/react/languages","stargazers_url":"https://api.github.com/repos/PiPeep/react/stargazers","contributors_url":"https://api.github.com/repos/PiPeep/react/contributors","subscribers_url":"https://api.github.com/repos/PiPeep/react/subscribers","subscription_url":"https://api.github.com/repos/PiPeep/react/subscription","commits_url":"https://api.github.com/repos/PiPeep/react/commits{/sha}","git_commits_url":"https://api.github.com/repos/PiPeep/react/git/commits{/sha}","comments_url":"https://api.github.com/repos/PiPeep/react/comments{/number}","issue_comment_url":"https://api.github.com/repos/PiPeep/react/issues/comments{/number}","contents_url":"https://api.github.com/repos/PiPeep/react/contents/{+path}","compare_url":"https://api.github.com/repos/PiPeep/react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PiPeep/react/merges","archive_url":"https://api.github.com/repos/PiPeep/react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PiPeep/react/downloads","issues_url":"https://api.github.com/repos/PiPeep/react/issues{/number}","pulls_url":"https://api.github.com/repos/PiPeep/react/pulls{/number}","milestones_url":"https://api.github.com/repos/PiPeep/react/milestones{/number}","notifications_url":"https://api.github.com/repos/PiPeep/react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PiPeep/react/labels{/name}","releases_url":"https://api.github.com/repos/PiPeep/react/releases{/id}","created_at":"2015-05-26T23:15:28Z","updated_at":"2015-05-26T23:15:31Z","pushed_at":"2015-06-04T21:20:24Z","git_url":"git://github.com/PiPeep/react.git","ssh_url":"git@github.com:PiPeep/react.git","clone_url":"https://github.com/PiPeep/react.git","svn_url":"https://github.com/PiPeep/react","homepage":"https://facebook.github.io/react/","size":59696,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"facebook:master","ref":"master","sha":"2d9a0846f1f37906a6f8c39339f684a276a3bf3d","user":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"repo":{"id":10270250,"name":"react","full_name":"facebook/react","owner":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/facebook/react","description":"A declarative, efficient, and flexible JavaScript library for building user interfaces.","fork":false,"url":"https://api.github.com/repos/facebook/react","forks_url":"https://api.github.com/repos/facebook/react/forks","keys_url":"https://api.github.com/repos/facebook/react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/facebook/react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/facebook/react/teams","hooks_url":"https://api.github.com/repos/facebook/react/hooks","issue_events_url":"https://api.github.com/repos/facebook/react/issues/events{/number}","events_url":"https://api.github.com/repos/facebook/react/events","assignees_url":"https://api.github.com/repos/facebook/react/assignees{/user}","branches_url":"https://api.github.com/repos/facebook/react/branches{/branch}","tags_url":"https://api.github.com/repos/facebook/react/tags","blobs_url":"https://api.github.com/repos/facebook/react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/facebook/react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/facebook/react/git/refs{/sha}","trees_url":"https://api.github.com/repos/facebook/react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/facebook/react/statuses/{sha}","languages_url":"https://api.github.com/repos/facebook/react/languages","stargazers_url":"https://api.github.com/repos/facebook/react/stargazers","contributors_url":"https://api.github.com/repos/facebook/react/contributors","subscribers_url":"https://api.github.com/repos/facebook/react/subscribers","subscription_url":"https://api.github.com/repos/facebook/react/subscription","commits_url":"https://api.github.com/repos/facebook/react/commits{/sha}","git_commits_url":"https://api.github.com/repos/facebook/react/git/commits{/sha}","comments_url":"https://api.github.com/repos/facebook/react/comments{/number}","issue_comment_url":"https://api.github.com/repos/facebook/react/issues/comments{/number}","contents_url":"https://api.github.com/repos/facebook/react/contents/{+path}","compare_url":"https://api.github.com/repos/facebook/react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/facebook/react/merges","archive_url":"https://api.github.com/repos/facebook/react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/facebook/react/downloads","issues_url":"https://api.github.com/repos/facebook/react/issues{/number}","pulls_url":"https://api.github.com/repos/facebook/react/pulls{/number}","milestones_url":"https://api.github.com/repos/facebook/react/milestones{/number}","notifications_url":"https://api.github.com/repos/facebook/react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/facebook/react/labels{/name}","releases_url":"https://api.github.com/repos/facebook/react/releases{/id}","created_at":"2013-05-24T16:15:54Z","updated_at":"2015-06-04T21:31:12Z","pushed_at":"2015-06-04T21:47:58Z","git_url":"git://github.com/facebook/react.git","ssh_url":"git@github.com:facebook/react.git","clone_url":"https://github.com/facebook/react.git","svn_url":"https://github.com/facebook/react","homepage":"https://facebook.github.io/react/","size":100069,"stargazers_count":23033,"watchers_count":23033,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3289,"mirror_url":null,"open_issues_count":549,"forks":3289,"open_issues":549,"watchers":23033,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/facebook/react/pulls/4029"},"html":{"href":"https://github.com/facebook/react/pull/4029"},"issue":{"href":"https://api.github.com/repos/facebook/react/issues/4029"},"comments":{"href":"https://api.github.com/repos/facebook/react/issues/4029/comments"},"review_comments":{"href":"https://api.github.com/repos/facebook/react/pulls/4029/comments"},"review_comment":{"href":"https://api.github.com/repos/facebook/react/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/facebook/react/pulls/4029/commits"},"statuses":{"href":"https://api.github.com/repos/facebook/react/statuses/357e18b2a1ef6f12a3f49c1a3dab53c0fe150865"}}}}