{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/78281488","id":78281488,"diff_hunk":"@@ -89,142 +70,138 @@ public void SecondNull()\n             Assert.Throws<ArgumentNullException>(\"second\", () => Enumerable.Range(0, 0).Concat(null));\n         }\n \n-        [Fact]\n-        public void TwoEnumerableSources()\n+        [Theory]\n+        [MemberData(nameof(ArraySourcesData))]\n+        [MemberData(nameof(ArraySelectSourcesData))]\n+        [MemberData(nameof(EnumerableSourcesData))]\n+        [MemberData(nameof(NonCollectionSourcesData))]\n+        [MemberData(nameof(ListSourcesData))]\n+        [MemberData(nameof(ConcatOfConcatsData))]\n+        [MemberData(nameof(ConcatWithSelfData))]\n+        [MemberData(nameof(ChainedCollectionConcatData))]\n+        public void VerifyEquals(IEnumerable<int> expected, IEnumerable<int> actual)\n         {\n-            VerifyEquals(\n-                Enumerable.Range(0, 7),\n-                Enumerable.Range(0, 3).Concat(Enumerable.Range(3, 4)));\n+            // workaround: xUnit type inference doesn't work if the input type is not T (like IEnumerable<T>)\n+            VerifyEqualsWorker(expected, actual);\n         }\n \n-        [Fact]\n-        public void TwoArraySources()\n+        private static void VerifyEqualsWorker<T>(IEnumerable<T> expected, IEnumerable<T> actual)\n         {\n-            VerifyEquals(\n-                Enumerable.Range(0, 7),\n-                Enumerable.Range(0, 3).ToArray().Concat(Enumerable.Range(3, 4).ToArray()));\n+            // All of these transforms should take an enumerable and produce\n+            // another enumerable with the same contents.\n+            var transforms = new List<EnumerableTransform<T>>\n+            {\n+                e => e,\n+                e => e.ToArray(),\n+                e => e.ToList(),\n+                e => e.Select(i => i),\n+                e => e.Select(i => i).ToArray(),\n+                e => e.Where(i => true),\n+                e => e.Concat(Array.Empty<T>()),\n+                e => ForceNotCollection(e),\n+                e => e.Concat(ForceNotCollection(Array.Empty<T>()))\n+            };\n+            \n+            // We run the transforms N^2 times, by testing all transforms\n+            // of expected against all transforms of actual.\n+            foreach (var outTransform in transforms)\n+            {\n+                foreach (var inTransform in transforms)\n+                {\n+                    IEnumerable<T> sameExpected = outTransform(expected);\n+                    IEnumerable<T> sameActual = inTransform(actual);\n+\n+                    Assert.Equal(sameExpected, sameActual);\n+                    Assert.Equal(sameExpected.Count(), sameActual.Count());\n+                }\n+            }\n         }\n \n-        [Fact]\n-        public void TwoArraySelectSources()\n-        {\n-            VerifyEquals(\n-                Enumerable.Range(0, 7),\n-                Enumerable.Range(0, 3).ToArray().Select(i => i).Concat(Enumerable.Range(3, 4).ToArray().Select(i => i)));\n-        }\n+        public static IEnumerable<object[]> ArraySourcesData() => GenerateSourcesData(outerTransform: e => e.ToArray());\n \n-        [Fact]\n-        public void TwoNonCollectionSources()\n-        {\n-            VerifyEquals(\n-                Enumerable.Range(0, 7),\n-                NumberRangeGuaranteedNotCollectionType(0, 3).Concat(NumberRangeGuaranteedNotCollectionType(3, 4).ToArray().Select(i => i)));\n-        }\n+        public static IEnumerable<object[]> ArraySelectSourcesData() => GenerateSourcesData(outerTransform: e => e.Select(i => i).ToArray());\n \n-        [Fact]\n-        public void ThreeEnumerableSources()\n-        {\n-            VerifyEquals(\n-                Enumerable.Range(0, 12),\n-                Enumerable.Range(0, 3).Concat(Enumerable.Range(3, 4)).Concat(Enumerable.Range(7, 5)));\n-        }\n+        public static IEnumerable<object[]> EnumerableSourcesData() => GenerateSourcesData();\n \n-        [Fact]\n-        public void FourEnumerableSources()\n-        {\n-            VerifyEquals(\n-                Enumerable.Range(0, 18),\n-                Enumerable.Range(0, 3).Concat(Enumerable.Range(3, 4)).Concat(Enumerable.Range(7, 5)).Concat(Enumerable.Range(12, 6)));\n-        }\n+        public static IEnumerable<object[]> NonCollectionSourcesData() => GenerateSourcesData(outerTransform: e => ForceNotCollection(e));\n \n-        [Fact]\n-        public void FiveEnumerableSources()\n-        {\n-            VerifyEquals(\n-                Enumerable.Range(0, 25),\n-                Enumerable.Range(0, 3).Concat(Enumerable.Range(3, 4)).Concat(Enumerable.Range(7, 5)).Concat(Enumerable.Range(12, 6)).Concat(Enumerable.Range(18, 7)));\n-        }\n+        public static IEnumerable<object[]> ListSourcesData() => GenerateSourcesData(outerTransform: e => e.ToList());\n \n-        [Fact]\n-        public void FiveNonCollectionSources()\n+        public static IEnumerable<object[]> ConcatOfConcatsData()\n         {\n-            VerifyEquals(\n-                Enumerable.Range(0, 25),\n-                NumberRangeGuaranteedNotCollectionType(0, 3)\n-                .Concat(NumberRangeGuaranteedNotCollectionType(3, 4))\n-                .Concat(NumberRangeGuaranteedNotCollectionType(7, 5))\n-                .Concat(NumberRangeGuaranteedNotCollectionType(12, 6))\n-                .Concat(NumberRangeGuaranteedNotCollectionType(18, 7)));\n-        }\n-\n-        [Fact]\n-        public void FiveListSources()\n-        {\n-            VerifyEquals(\n-                Enumerable.Range(0, 25),\n-                Enumerable.Range(0, 3).ToList()\n-                          .Concat(Enumerable.Range(3, 4).ToList())\n-                          .Concat(Enumerable.Range(7, 5).ToList())\n-                          .Concat(Enumerable.Range(12, 6).ToList())\n-                          .Concat(Enumerable.Range(18, 7).ToList()));\n-        }\n-\n-        [Fact]\n-        public void ConcatOfConcats()\n-        {\n-            VerifyEquals(\n+            yield return new object[]\n+            {\n                 Enumerable.Range(0, 20),\n                 Enumerable.Concat(\n                     Enumerable.Concat(\n                         Enumerable.Range(0, 4),\n                         Enumerable.Range(4, 6)),\n                     Enumerable.Concat(\n                         Enumerable.Range(10, 3),\n-                        Enumerable.Range(13, 7))));\n+                        Enumerable.Range(13, 7)))\n+            };\n         }\n \n-        [Fact]\n-        public void ConcatWithSelf()\n+        public static IEnumerable<object[]> ConcatWithSelfData()\n         {\n             IEnumerable<int> source = Enumerable.Repeat(1, 4).Concat(Enumerable.Repeat(1, 5));\n             source = source.Concat(source);\n-            VerifyEquals(Enumerable.Repeat(1, 18), source);\n+\n+            yield return new object[] { Enumerable.Repeat(1, 18), source };\n         }\n \n-        private void VerifyEquals(IEnumerable<int> expected, IEnumerable<int> actual)\n+        public static IEnumerable<object[]> ChainedCollectionConcatData() => GenerateSourcesData(innerTransform: e => e.ToList());\n+\n+        private static IEnumerable<object[]> GenerateSourcesData(EnumerableTransform<int> outerTransform = null, EnumerableTransform<int> innerTransform = null)\n         {\n-            Assert.Equal(expected, actual);\n-            Assert.Equal(expected, actual.ToArray());\n-            Assert.Equal(expected, actual.ToList());\n-            Assert.Equal(expected, actual.Select(i => i).ToArray());\n-            Assert.Equal(expected, actual.Where(i => true).ToArray());\n-            Assert.Equal(expected, actual.OrderBy(i => i));\n-            Assert.Equal(expected, Enumerable.Empty<int>().Concat(actual));\n-            Assert.Equal(expected.Count(), actual.Count());\n+            outerTransform = outerTransform ?? (e => e);\n+            innerTransform = innerTransform ?? (e => e);\n+\n+            for (int i = 0; i <= 6; i++)\n+            {\n+                var expected = Enumerable.Range(0, i * 3);\n+                var actual = Enumerable.Empty<int>();\n+                for (int j = 0; j < i; j++)\n+                {\n+                    actual = outerTransform(actual.Concat(innerTransform(Enumerable.Range(j * 3, 3))));\n+                }\n+\n+                yield return new object[] { expected, actual };\n+            }\n         }\n \n-        [Fact]\n-        public void ManyEmptyConcats()\n+        [Theory]\n+        [MemberData(nameof(ManyConcatsData))]\n+        public void ManyConcats(IEnumerable<int> toConcat, int times, IEnumerable<int> expected)\n         {\n+            Debug.Assert(times >= 0);\n+\n             IEnumerable<int> source = Enumerable.Empty<int>();\n-            for (int i = 0; i < 256; i++)\n+            for (int i = 0; i < times; i++)\n             {\n-                source = source.Concat(Enumerable.Empty<int>());\n+                source = source.Concat(toConcat);\n             }\n-            Assert.Equal(0, source.Count());\n-            Assert.Equal(Enumerable.Empty<int>(), source);\n+\n+            Assert.Equal(toConcat.Count() * times, source.Count());\n+            VerifyEqualsWorker(expected, source);\n+        }\n+\n+        public static IEnumerable<object[]> ManyConcatsData()\n+        {\n+            yield return new object[] { Enumerable.Empty<int>(), 256, Enumerable.Empty<int>() };\n+            yield return new object[] { Enumerable.Repeat(6, 1), 256, Enumerable.Repeat(6, 256) };","path":"src/System.Linq/tests/ConcatTests.cs","position":315,"original_position":315,"commit_id":"0478acf98d11eaccfa094705a0954f262e4d54f6","original_commit_id":"0478acf98d11eaccfa094705a0954f262e4d54f6","user":{"login":"stephentoub","id":2642209,"avatar_url":"https://avatars.githubusercontent.com/u/2642209?v=3","gravatar_id":"","url":"https://api.github.com/users/stephentoub","html_url":"https://github.com/stephentoub","followers_url":"https://api.github.com/users/stephentoub/followers","following_url":"https://api.github.com/users/stephentoub/following{/other_user}","gists_url":"https://api.github.com/users/stephentoub/gists{/gist_id}","starred_url":"https://api.github.com/users/stephentoub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephentoub/subscriptions","organizations_url":"https://api.github.com/users/stephentoub/orgs","repos_url":"https://api.github.com/users/stephentoub/repos","events_url":"https://api.github.com/users/stephentoub/events{/privacy}","received_events_url":"https://api.github.com/users/stephentoub/received_events","type":"User","site_admin":false},"body":"Should we have an input here where toConcat is a collection rather than just an enumerable?","created_at":"2016-09-10T18:15:19Z","updated_at":"2016-09-10T18:15:19Z","html_url":"https://github.com/dotnet/corefx/pull/11525#discussion_r78281488","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/11525","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/78281488"},"html":{"href":"https://github.com/dotnet/corefx/pull/11525#discussion_r78281488"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11525"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/11525","id":84393422,"html_url":"https://github.com/dotnet/corefx/pull/11525","diff_url":"https://github.com/dotnet/corefx/pull/11525.diff","patch_url":"https://github.com/dotnet/corefx/pull/11525.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/11525","number":11525,"state":"open","locked":false,"title":"Cleanup and improve test coverage for Concat tests","user":{"login":"jamesqo","id":9159214,"avatar_url":"https://avatars.githubusercontent.com/u/9159214?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesqo","html_url":"https://github.com/jamesqo","followers_url":"https://api.github.com/users/jamesqo/followers","following_url":"https://api.github.com/users/jamesqo/following{/other_user}","gists_url":"https://api.github.com/users/jamesqo/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesqo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesqo/subscriptions","organizations_url":"https://api.github.com/users/jamesqo/orgs","repos_url":"https://api.github.com/users/jamesqo/repos","events_url":"https://api.github.com/users/jamesqo/events{/privacy}","received_events_url":"https://api.github.com/users/jamesqo/received_events","type":"User","site_admin":false},"body":"These changes convert most of the `Concat` tests to use `[Theory]` and improve test coverage, since the asserts are more centralized in one place. I added tests for the relevant codepaths mentioned in #11492; the case where we concat two collections, then append an enumerable is handled indirectly by `ChainedCollectionConcatData`, since an `Enumerable.Empty<T>().Concat(x.ToList())` gets passed to the theory and that is eventually compared to `.Concat(ForceNotCollection(Array.Empty<T>()))`.\r\n\r\nSeparated out from #11492 since I felt the PR was already a little long.\r\n\r\ncc @stephentoub ","created_at":"2016-09-07T23:52:17Z","updated_at":"2016-09-10T18:15:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e01b994a358eca265d5d8c8da573002df59ef940","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/11525/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/11525/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/11525/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/0478acf98d11eaccfa094705a0954f262e4d54f6","head":{"label":"jamesqo:concat-tests","ref":"concat-tests","sha":"0478acf98d11eaccfa094705a0954f262e4d54f6","user":{"login":"jamesqo","id":9159214,"avatar_url":"https://avatars.githubusercontent.com/u/9159214?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesqo","html_url":"https://github.com/jamesqo","followers_url":"https://api.github.com/users/jamesqo/followers","following_url":"https://api.github.com/users/jamesqo/following{/other_user}","gists_url":"https://api.github.com/users/jamesqo/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesqo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesqo/subscriptions","organizations_url":"https://api.github.com/users/jamesqo/orgs","repos_url":"https://api.github.com/users/jamesqo/repos","events_url":"https://api.github.com/users/jamesqo/events{/privacy}","received_events_url":"https://api.github.com/users/jamesqo/received_events","type":"User","site_admin":false},"repo":{"id":37746383,"name":"corefx","full_name":"jamesqo/corefx","owner":{"login":"jamesqo","id":9159214,"avatar_url":"https://avatars.githubusercontent.com/u/9159214?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesqo","html_url":"https://github.com/jamesqo","followers_url":"https://api.github.com/users/jamesqo/followers","following_url":"https://api.github.com/users/jamesqo/following{/other_user}","gists_url":"https://api.github.com/users/jamesqo/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesqo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesqo/subscriptions","organizations_url":"https://api.github.com/users/jamesqo/orgs","repos_url":"https://api.github.com/users/jamesqo/repos","events_url":"https://api.github.com/users/jamesqo/events{/privacy}","received_events_url":"https://api.github.com/users/jamesqo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jamesqo/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.","fork":true,"url":"https://api.github.com/repos/jamesqo/corefx","forks_url":"https://api.github.com/repos/jamesqo/corefx/forks","keys_url":"https://api.github.com/repos/jamesqo/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jamesqo/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jamesqo/corefx/teams","hooks_url":"https://api.github.com/repos/jamesqo/corefx/hooks","issue_events_url":"https://api.github.com/repos/jamesqo/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/jamesqo/corefx/events","assignees_url":"https://api.github.com/repos/jamesqo/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/jamesqo/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/jamesqo/corefx/tags","blobs_url":"https://api.github.com/repos/jamesqo/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jamesqo/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jamesqo/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/jamesqo/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jamesqo/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/jamesqo/corefx/languages","stargazers_url":"https://api.github.com/repos/jamesqo/corefx/stargazers","contributors_url":"https://api.github.com/repos/jamesqo/corefx/contributors","subscribers_url":"https://api.github.com/repos/jamesqo/corefx/subscribers","subscription_url":"https://api.github.com/repos/jamesqo/corefx/subscription","commits_url":"https://api.github.com/repos/jamesqo/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/jamesqo/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/jamesqo/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/jamesqo/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/jamesqo/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/jamesqo/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jamesqo/corefx/merges","archive_url":"https://api.github.com/repos/jamesqo/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jamesqo/corefx/downloads","issues_url":"https://api.github.com/repos/jamesqo/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/jamesqo/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/jamesqo/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/jamesqo/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jamesqo/corefx/labels{/name}","releases_url":"https://api.github.com/repos/jamesqo/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/jamesqo/corefx/deployments","created_at":"2015-06-19T21:17:21Z","updated_at":"2016-07-20T21:25:47Z","pushed_at":"2016-09-10T02:43:54Z","git_url":"git://github.com/jamesqo/corefx.git","ssh_url":"git@github.com:jamesqo/corefx.git","clone_url":"https://github.com/jamesqo/corefx.git","svn_url":"https://github.com/jamesqo/corefx","homepage":"http://dotnet.github.io/core/","size":86177,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"41df95353a4070d320b12800b104854a0fc4f9ae","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":26295345,"name":"corefx","full_name":"dotnet/corefx","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.","fork":false,"url":"https://api.github.com/repos/dotnet/corefx","forks_url":"https://api.github.com/repos/dotnet/corefx/forks","keys_url":"https://api.github.com/repos/dotnet/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/corefx/teams","hooks_url":"https://api.github.com/repos/dotnet/corefx/hooks","issue_events_url":"https://api.github.com/repos/dotnet/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/corefx/events","assignees_url":"https://api.github.com/repos/dotnet/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/corefx/tags","blobs_url":"https://api.github.com/repos/dotnet/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/corefx/languages","stargazers_url":"https://api.github.com/repos/dotnet/corefx/stargazers","contributors_url":"https://api.github.com/repos/dotnet/corefx/contributors","subscribers_url":"https://api.github.com/repos/dotnet/corefx/subscribers","subscription_url":"https://api.github.com/repos/dotnet/corefx/subscription","commits_url":"https://api.github.com/repos/dotnet/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/corefx/merges","archive_url":"https://api.github.com/repos/dotnet/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/corefx/downloads","issues_url":"https://api.github.com/repos/dotnet/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/corefx/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/corefx/deployments","created_at":"2014-11-06T23:42:48Z","updated_at":"2016-09-10T15:31:34Z","pushed_at":"2016-09-10T17:43:12Z","git_url":"git://github.com/dotnet/corefx.git","ssh_url":"git@github.com:dotnet/corefx.git","clone_url":"https://github.com/dotnet/corefx.git","svn_url":"https://github.com/dotnet/corefx","homepage":"https://docs.microsoft.com/dotnet/","size":137418,"stargazers_count":10502,"watchers_count":10502,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2604,"mirror_url":null,"open_issues_count":1444,"forks":2604,"open_issues":1444,"watchers":10502,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11525"},"html":{"href":"https://github.com/dotnet/corefx/pull/11525"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/11525"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/11525/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11525/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/11525/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/0478acf98d11eaccfa094705a0954f262e4d54f6"}}}}
{"actor":{"display_login":"stephentoub"}}