{"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift/pulls/comments/178676486","pull_request_review_id":108773188,"id":178676486,"diff_hunk":"@@ -268,6 +268,47 @@ class Driver::InputInfoMap\n };\n using InputInfoMap = Driver::InputInfoMap;\n \n+// Get the filename for build record.\n+// Additionally set 'outputBuildRecordForModuleOnlyBuild' to true if this is\n+// full compilation with swiftmodule.\n+static bool getCompilationRecordPath(std::string &buildRecordPath,\n+                                     bool &outputBuildRecordForModuleOnlyBuild,\n+                                     const OutputInfo &OI,\n+                                     const Optional<OutputFileMap> &OFM,\n+                                     DiagnosticEngine *Diags) {\n+  if (!OFM) {\n+    // FIXME: This should work without an output file map. We should have\n+    // another way to specify a build record and where to put intermediates.\n+    if (Diags)\n+      Diags->diagnose(SourceLoc(), diag::incremental_requires_output_file_map);\n+    return true;\n+  }\n+\n+  if (auto *masterOutputMap = OFM->getOutputMapForSingleOutput())\n+    buildRecordPath = masterOutputMap->lookup(file_types::TY_SwiftDeps);\n+\n+  if (buildRecordPath.empty()) {\n+    if (Diags)\n+      Diags->diagnose(SourceLoc(),\n+                      diag::incremental_requires_build_record_entry,\n+                      file_types::getTypeName(file_types::TY_SwiftDeps));\n+    return true;\n+  }\n+\n+  // In 'emit-module' only mode, use build-record filename suffixed with\n+  // '~moduleonly'. So that module-only mode doesn't mess up build-record\n+  // file for full compilation.\n+  if (OI.CompilerOutputType == file_types::TY_SwiftModuleFile) {\n+    buildRecordPath = buildRecordPath.append(\"~moduleonly\");\n+  } else if (OI.ShouldTreatModuleAsTopLevelOutput) {\n+    // If we emit module along with full compilation, emit build record\n+    // file for '-emit-module' only mode as well.\n+    outputBuildRecordForModuleOnlyBuild = true;\n+  }\n+\n+  return false;\n+}","path":"lib/Driver/Driver.cpp","position":43,"original_position":43,"commit_id":"407a1ffe22f1141fdb9446f822fae8cae0a52da9","original_commit_id":"407a1ffe22f1141fdb9446f822fae8cae0a52da9","user":{"login":"davidungar","id":461264,"avatar_url":"https://avatars1.githubusercontent.com/u/461264?v=4","gravatar_id":"","url":"https://api.github.com/users/davidungar","html_url":"https://github.com/davidungar","followers_url":"https://api.github.com/users/davidungar/followers","following_url":"https://api.github.com/users/davidungar/following{/other_user}","gists_url":"https://api.github.com/users/davidungar/gists{/gist_id}","starred_url":"https://api.github.com/users/davidungar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidungar/subscriptions","organizations_url":"https://api.github.com/users/davidungar/orgs","repos_url":"https://api.github.com/users/davidungar/repos","events_url":"https://api.github.com/users/davidungar/events{/privacy}","received_events_url":"https://api.github.com/users/davidungar/received_events","type":"User","site_admin":false},"body":"I like this refactoring! This refactoring has opened my eyes to a further refactoring! It looks like if the routine returns false (no error) `buildRecordPath` will not be empty. It also looks like the condition for `outputBuildRecordForModuleOnlyBuild` is an invariant function on OI.\r\nSo what this suggests is that the routine not deal with ``outputBuildRecordForModuleOnlyBuild``. Instead create a function to compute that predicate. That function would be a member function of the class of OI (OutputInfo?).\r\nJust call that function where you need the value. It is cheap enough.\r\nThen, you can simplify this routine to just return the `buildRecordPath` with an empty string returned value signaling error. Cool!!","created_at":"2018-04-02T23:20:07Z","updated_at":"2018-04-02T23:20:07Z","html_url":"https://github.com/apple/swift/pull/15536#discussion_r178676486","pull_request_url":"https://api.github.com/repos/apple/swift/pulls/15536","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/comments/178676486"},"html":{"href":"https://github.com/apple/swift/pull/15536#discussion_r178676486"},"pull_request":{"href":"https://api.github.com/repos/apple/swift/pulls/15536"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift/pulls/15536","id":177722921,"html_url":"https://github.com/apple/swift/pull/15536","diff_url":"https://github.com/apple/swift/pull/15536.diff","patch_url":"https://github.com/apple/swift/pull/15536.patch","issue_url":"https://api.github.com/repos/apple/swift/issues/15536","number":15536,"state":"open","locked":false,"title":"[Driver] Use separated build record file for '-emit-module' only mode","user":{"login":"rintaro","id":142081,"avatar_url":"https://avatars1.githubusercontent.com/u/142081?v=4","gravatar_id":"","url":"https://api.github.com/users/rintaro","html_url":"https://github.com/rintaro","followers_url":"https://api.github.com/users/rintaro/followers","following_url":"https://api.github.com/users/rintaro/following{/other_user}","gists_url":"https://api.github.com/users/rintaro/gists{/gist_id}","starred_url":"https://api.github.com/users/rintaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rintaro/subscriptions","organizations_url":"https://api.github.com/users/rintaro/orgs","repos_url":"https://api.github.com/users/rintaro/repos","events_url":"https://api.github.com/users/rintaro/events{/privacy}","received_events_url":"https://api.github.com/users/rintaro/received_events","type":"User","site_admin":false},"body":"* In `-emit-module` only mode, use `~moduleonly` suffixed build record filename.\r\n* In full compilation(`-c`) with `-emit-module`, output duplicated build record file for full compilation *and* module only mode (`~moduleonly`).\r\n","created_at":"2018-03-27T12:24:37Z","updated_at":"2018-04-02T23:20:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c0af5e0ecf3d4f9d519a86f0cdc9b280d292bed0","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apple/swift/pulls/15536/commits","review_comments_url":"https://api.github.com/repos/apple/swift/pulls/15536/comments","review_comment_url":"https://api.github.com/repos/apple/swift/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift/issues/15536/comments","statuses_url":"https://api.github.com/repos/apple/swift/statuses/407a1ffe22f1141fdb9446f822fae8cae0a52da9","head":{"label":"rintaro:driver-incremental-moduleonly2","ref":"driver-incremental-moduleonly2","sha":"407a1ffe22f1141fdb9446f822fae8cae0a52da9","user":{"login":"rintaro","id":142081,"avatar_url":"https://avatars1.githubusercontent.com/u/142081?v=4","gravatar_id":"","url":"https://api.github.com/users/rintaro","html_url":"https://github.com/rintaro","followers_url":"https://api.github.com/users/rintaro/followers","following_url":"https://api.github.com/users/rintaro/following{/other_user}","gists_url":"https://api.github.com/users/rintaro/gists{/gist_id}","starred_url":"https://api.github.com/users/rintaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rintaro/subscriptions","organizations_url":"https://api.github.com/users/rintaro/orgs","repos_url":"https://api.github.com/users/rintaro/repos","events_url":"https://api.github.com/users/rintaro/events{/privacy}","received_events_url":"https://api.github.com/users/rintaro/received_events","type":"User","site_admin":false},"repo":{"id":53176184,"name":"swift","full_name":"rintaro/swift","owner":{"login":"rintaro","id":142081,"avatar_url":"https://avatars1.githubusercontent.com/u/142081?v=4","gravatar_id":"","url":"https://api.github.com/users/rintaro","html_url":"https://github.com/rintaro","followers_url":"https://api.github.com/users/rintaro/followers","following_url":"https://api.github.com/users/rintaro/following{/other_user}","gists_url":"https://api.github.com/users/rintaro/gists{/gist_id}","starred_url":"https://api.github.com/users/rintaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rintaro/subscriptions","organizations_url":"https://api.github.com/users/rintaro/orgs","repos_url":"https://api.github.com/users/rintaro/repos","events_url":"https://api.github.com/users/rintaro/events{/privacy}","received_events_url":"https://api.github.com/users/rintaro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rintaro/swift","description":"The Swift Programming Language","fork":true,"url":"https://api.github.com/repos/rintaro/swift","forks_url":"https://api.github.com/repos/rintaro/swift/forks","keys_url":"https://api.github.com/repos/rintaro/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rintaro/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rintaro/swift/teams","hooks_url":"https://api.github.com/repos/rintaro/swift/hooks","issue_events_url":"https://api.github.com/repos/rintaro/swift/issues/events{/number}","events_url":"https://api.github.com/repos/rintaro/swift/events","assignees_url":"https://api.github.com/repos/rintaro/swift/assignees{/user}","branches_url":"https://api.github.com/repos/rintaro/swift/branches{/branch}","tags_url":"https://api.github.com/repos/rintaro/swift/tags","blobs_url":"https://api.github.com/repos/rintaro/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rintaro/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rintaro/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/rintaro/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rintaro/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/rintaro/swift/languages","stargazers_url":"https://api.github.com/repos/rintaro/swift/stargazers","contributors_url":"https://api.github.com/repos/rintaro/swift/contributors","subscribers_url":"https://api.github.com/repos/rintaro/swift/subscribers","subscription_url":"https://api.github.com/repos/rintaro/swift/subscription","commits_url":"https://api.github.com/repos/rintaro/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/rintaro/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/rintaro/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/rintaro/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/rintaro/swift/contents/{+path}","compare_url":"https://api.github.com/repos/rintaro/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rintaro/swift/merges","archive_url":"https://api.github.com/repos/rintaro/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rintaro/swift/downloads","issues_url":"https://api.github.com/repos/rintaro/swift/issues{/number}","pulls_url":"https://api.github.com/repos/rintaro/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/rintaro/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/rintaro/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rintaro/swift/labels{/name}","releases_url":"https://api.github.com/repos/rintaro/swift/releases{/id}","deployments_url":"https://api.github.com/repos/rintaro/swift/deployments","created_at":"2016-03-05T01:24:05Z","updated_at":"2016-11-12T08:40:05Z","pushed_at":"2018-04-02T16:31:46Z","git_url":"git://github.com/rintaro/swift.git","ssh_url":"git@github.com:rintaro/swift.git","clone_url":"https://github.com/rintaro/swift.git","svn_url":"https://github.com/rintaro/swift","homepage":"https://swift.org/","size":265739,"stargazers_count":1,"watchers_count":1,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":2,"open_issues":0,"watchers":1,"default_branch":"empty"}},"base":{"label":"apple:master","ref":"master","sha":"3f9ddd43b90a2fd7d92646cbb76a306c24e6874a","user":{"login":"apple","id":10639145,"avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"repo":{"id":44838949,"name":"swift","full_name":"apple/swift","owner":{"login":"apple","id":10639145,"avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apple/swift","description":"The Swift Programming Language","fork":false,"url":"https://api.github.com/repos/apple/swift","forks_url":"https://api.github.com/repos/apple/swift/forks","keys_url":"https://api.github.com/repos/apple/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift/teams","hooks_url":"https://api.github.com/repos/apple/swift/hooks","issue_events_url":"https://api.github.com/repos/apple/swift/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift/events","assignees_url":"https://api.github.com/repos/apple/swift/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift/tags","blobs_url":"https://api.github.com/repos/apple/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift/languages","stargazers_url":"https://api.github.com/repos/apple/swift/stargazers","contributors_url":"https://api.github.com/repos/apple/swift/contributors","subscribers_url":"https://api.github.com/repos/apple/swift/subscribers","subscription_url":"https://api.github.com/repos/apple/swift/subscription","commits_url":"https://api.github.com/repos/apple/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift/merges","archive_url":"https://api.github.com/repos/apple/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift/downloads","issues_url":"https://api.github.com/repos/apple/swift/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift/releases{/id}","deployments_url":"https://api.github.com/repos/apple/swift/deployments","created_at":"2015-10-23T21:15:07Z","updated_at":"2018-04-02T23:00:01Z","pushed_at":"2018-04-02T23:11:35Z","git_url":"git://github.com/apple/swift.git","ssh_url":"git@github.com:apple/swift.git","clone_url":"https://github.com/apple/swift.git","svn_url":"https://github.com/apple/swift","homepage":"https://swift.org/","size":277194,"stargazers_count":43212,"watchers_count":43212,"language":"C++","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":6785,"mirror_url":null,"archived":false,"open_issues_count":290,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":6785,"open_issues":290,"watchers":43212,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/15536"},"html":{"href":"https://github.com/apple/swift/pull/15536"},"issue":{"href":"https://api.github.com/repos/apple/swift/issues/15536"},"comments":{"href":"https://api.github.com/repos/apple/swift/issues/15536/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift/pulls/15536/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift/pulls/15536/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift/statuses/407a1ffe22f1141fdb9446f822fae8cae0a52da9"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"davidungar"}}