{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/171472227","pull_request_review_id":100327144,"id":171472227,"diff_hunk":"@@ -10,13 +10,30 @@ internal static partial class PathInternal\n         /// <summary>\n         /// Returns true if the path ends in a directory separator.\n         /// </summary>\n-        internal static bool EndsInDirectorySeparator(ReadOnlySpan<char> path) => path.Length > 0 && IsDirectorySeparator(path[path.Length - 1]);\n+        internal static bool EndsInDirectorySeparator(ReadOnlySpan<char> path)\n+            => path.Length > 0 && IsDirectorySeparator(path[path.Length - 1]);\n \n         /// <summary>\n         /// Returns true if the path starts in a directory separator.\n         /// </summary>\n         internal static bool StartsWithDirectorySeparator(ReadOnlySpan<char> path) => path.Length > 0 && IsDirectorySeparator(path[0]);\n \n+        internal static string EnsureTrailingSeparator(string path)\n+            => EndsInDirectorySeparator(path) ? path : path + DirectorySeparatorCharAsString;\n+\n+        internal static string TrimEndingDirectorySeparator(string path) =>\n+            EndsInDirectorySeparator(path) && !IsRoot(path) ?\n+                path.Substring(0, path.Length - 1) :","path":"src/Common/src/CoreLib/System/IO/PathInternal.cs","position":18,"original_position":18,"commit_id":"9a0c8bec01f0d868bc3836f803c9feab93952411","original_commit_id":"9a0c8bec01f0d868bc3836f803c9feab93952411","user":{"login":"JeremyKuhne","id":8184940,"avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"body":"As mentioned above, in some cases these are actually putting the strings out to the user. I will be making more passes to try and directly use span methods where we can and will kill anything that doesn't need the original string.","created_at":"2018-03-01T06:25:45Z","updated_at":"2018-03-01T06:25:45Z","html_url":"https://github.com/dotnet/corefx/pull/27585#discussion_r171472227","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/27585","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/171472227"},"html":{"href":"https://github.com/dotnet/corefx/pull/27585#discussion_r171472227"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/27585"}},"in_reply_to_id":171467407},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/27585","id":172118369,"html_url":"https://github.com/dotnet/corefx/pull/27585","diff_url":"https://github.com/dotnet/corefx/pull/27585.diff","patch_url":"https://github.com/dotnet/corefx/pull/27585.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/27585","number":27585,"state":"open","locked":false,"title":"Remove span helpers, use mirrored PathInternal helper","user":{"login":"JeremyKuhne","id":8184940,"avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"body":"Remove other unnecessary helpers (notably with Path.Join available)\r\n\r\ncc: @ahsonkhan, @Anipik, @pjanotti, @danmosemsft ","created_at":"2018-03-01T01:10:13Z","updated_at":"2018-03-01T06:25:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ea848e44d75785df5395a5e19930ce23e732f469","assignee":{"login":"JeremyKuhne","id":8184940,"avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"assignees":[{"login":"JeremyKuhne","id":8184940,"avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":154422420,"url":"https://api.github.com/repos/dotnet/corefx/labels/area-System.IO","name":"area-System.IO","color":"d4c5f9","default":false}],"milestone":{"url":"https://api.github.com/repos/dotnet/corefx/milestones/12","html_url":"https://github.com/dotnet/corefx/milestone/12","labels_url":"https://api.github.com/repos/dotnet/corefx/milestones/12/labels","id":2323293,"number":12,"title":"2.1.0","description":".NET Core 2.1, next major release. See [official release dates](https://github.com/dotnet/core/blob/master/roadmap.md) for details.","creator":{"login":"karelz","id":5776068,"avatar_url":"https://avatars2.githubusercontent.com/u/5776068?v=4","gravatar_id":"","url":"https://api.github.com/users/karelz","html_url":"https://github.com/karelz","followers_url":"https://api.github.com/users/karelz/followers","following_url":"https://api.github.com/users/karelz/following{/other_user}","gists_url":"https://api.github.com/users/karelz/gists{/gist_id}","starred_url":"https://api.github.com/users/karelz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karelz/subscriptions","organizations_url":"https://api.github.com/users/karelz/orgs","repos_url":"https://api.github.com/users/karelz/repos","events_url":"https://api.github.com/users/karelz/events{/privacy}","received_events_url":"https://api.github.com/users/karelz/received_events","type":"User","site_admin":false},"open_issues":241,"closed_issues":5138,"state":"open","created_at":"2017-02-15T02:14:11Z","updated_at":"2018-03-01T06:04:31Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/27585/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/27585/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/27585/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/9a0c8bec01f0d868bc3836f803c9feab93952411","head":{"label":"JeremyKuhne:cleanfs","ref":"cleanfs","sha":"9a0c8bec01f0d868bc3836f803c9feab93952411","user":{"login":"JeremyKuhne","id":8184940,"avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"repo":{"id":30339123,"name":"corefx","full_name":"JeremyKuhne/corefx","owner":{"login":"JeremyKuhne","id":8184940,"avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/JeremyKuhne/corefx","description":"This repo contains the foundational libraries that make up the .NET Core development stack.","fork":true,"url":"https://api.github.com/repos/JeremyKuhne/corefx","forks_url":"https://api.github.com/repos/JeremyKuhne/corefx/forks","keys_url":"https://api.github.com/repos/JeremyKuhne/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JeremyKuhne/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JeremyKuhne/corefx/teams","hooks_url":"https://api.github.com/repos/JeremyKuhne/corefx/hooks","issue_events_url":"https://api.github.com/repos/JeremyKuhne/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/JeremyKuhne/corefx/events","assignees_url":"https://api.github.com/repos/JeremyKuhne/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/JeremyKuhne/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/JeremyKuhne/corefx/tags","blobs_url":"https://api.github.com/repos/JeremyKuhne/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JeremyKuhne/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JeremyKuhne/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/JeremyKuhne/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JeremyKuhne/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/JeremyKuhne/corefx/languages","stargazers_url":"https://api.github.com/repos/JeremyKuhne/corefx/stargazers","contributors_url":"https://api.github.com/repos/JeremyKuhne/corefx/contributors","subscribers_url":"https://api.github.com/repos/JeremyKuhne/corefx/subscribers","subscription_url":"https://api.github.com/repos/JeremyKuhne/corefx/subscription","commits_url":"https://api.github.com/repos/JeremyKuhne/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/JeremyKuhne/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/JeremyKuhne/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/JeremyKuhne/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/JeremyKuhne/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/JeremyKuhne/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JeremyKuhne/corefx/merges","archive_url":"https://api.github.com/repos/JeremyKuhne/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JeremyKuhne/corefx/downloads","issues_url":"https://api.github.com/repos/JeremyKuhne/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/JeremyKuhne/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/JeremyKuhne/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/JeremyKuhne/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JeremyKuhne/corefx/labels{/name}","releases_url":"https://api.github.com/repos/JeremyKuhne/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/JeremyKuhne/corefx/deployments","created_at":"2015-02-05T05:16:58Z","updated_at":"2017-02-23T03:04:09Z","pushed_at":"2018-03-01T03:26:18Z","git_url":"git://github.com/JeremyKuhne/corefx.git","ssh_url":"git@github.com:JeremyKuhne/corefx.git","clone_url":"https://github.com/JeremyKuhne/corefx.git","svn_url":"https://github.com/JeremyKuhne/corefx","homepage":"","size":166847,"stargazers_count":1,"watchers_count":1,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"7c5d4bd8d3c1d50555bd8f8256f942e52e4d533a","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","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://avatars0.githubusercontent.com/u/9141961?v=4","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. We welcome contributions.","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":"2018-02-28T19:29:15Z","pushed_at":"2018-03-01T06:17:40Z","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://github.com/dotnet/core","size":171394,"stargazers_count":13457,"watchers_count":13457,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3824,"mirror_url":null,"archived":false,"open_issues_count":2218,"license":null,"forks":3824,"open_issues":2218,"watchers":13457,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/27585"},"html":{"href":"https://github.com/dotnet/corefx/pull/27585"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/27585"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/27585/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/27585/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/27585/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/9a0c8bec01f0d868bc3836f803c9feab93952411"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"JeremyKuhne"}}