{"action":"created","comment":{"url":"https://api.github.com/repos/lampepfl/dotty/pulls/comments/64982142","id":64982142,"diff_hunk":"@@ -160,6 +160,8 @@ class ScalaSettings extends Settings.SettingGroup {\n   val YtestPickler = BooleanSetting(\"-Ytest-pickler\", \"self-test for pickling functionality; should be used with -Ystop-after:pickler\")\n   val YcheckReentrant = BooleanSetting(\"-Ycheck-reentrant\", \"check that compiled program does not contain vars that can be accessed from a global root.\")\n   val YkeepComments = BooleanSetting(\"-Ykeep-comments\", \"Keep comments when scanning source files.\")\n+  val YforceSbtPhases = BooleanSetting(\"-Yforce-sbt-phases\", \"Run the phases used by sbt for incremental compilation (ExtractDependencies and ExtractAPI) even if the compiler is ran outside of sbt, for debugging.\")\n+  val YdumpSbtInc = BooleanSetting(\"-Ydump-sbt-inc\", \"For every compiled foo.scala, output the sbt API representation and dependencies in foo.inc, implies -Yforce-sbt-phases.\")","path":"src/dotty/tools/dotc/config/ScalaSettings.scala","position":5,"original_position":5,"commit_id":"64d2b47d4d6e2af56acb294c42e793a203b50c94","original_commit_id":"64d2b47d4d6e2af56acb294c42e793a203b50c94","user":{"login":"smarter","id":63430,"avatar_url":"https://avatars.githubusercontent.com/u/63430?v=3","gravatar_id":"","url":"https://api.github.com/users/smarter","html_url":"https://github.com/smarter","followers_url":"https://api.github.com/users/smarter/followers","following_url":"https://api.github.com/users/smarter/following{/other_user}","gists_url":"https://api.github.com/users/smarter/gists{/gist_id}","starred_url":"https://api.github.com/users/smarter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarter/subscriptions","organizations_url":"https://api.github.com/users/smarter/orgs","repos_url":"https://api.github.com/users/smarter/repos","events_url":"https://api.github.com/users/smarter/events{/privacy}","received_events_url":"https://api.github.com/users/smarter/received_events","type":"User","site_admin":false},"body":"inc stands for incremental, I'll make that explicit in the description","created_at":"2016-05-28T01:48:51Z","updated_at":"2016-05-28T01:48:51Z","html_url":"https://github.com/lampepfl/dotty/pull/1244#discussion_r64982142","pull_request_url":"https://api.github.com/repos/lampepfl/dotty/pulls/1244","_links":{"self":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/comments/64982142"},"html":{"href":"https://github.com/lampepfl/dotty/pull/1244#discussion_r64982142"},"pull_request":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1244"}}},"pull_request":{"url":"https://api.github.com/repos/lampepfl/dotty/pulls/1244","id":68636092,"html_url":"https://github.com/lampepfl/dotty/pull/1244","diff_url":"https://github.com/lampepfl/dotty/pull/1244.diff","patch_url":"https://github.com/lampepfl/dotty/pull/1244.patch","issue_url":"https://api.github.com/repos/lampepfl/dotty/issues/1244","number":1244,"state":"open","locked":false,"title":"Add sbt incremental compilation support","user":{"login":"smarter","id":63430,"avatar_url":"https://avatars.githubusercontent.com/u/63430?v=3","gravatar_id":"","url":"https://api.github.com/users/smarter","html_url":"https://github.com/smarter","followers_url":"https://api.github.com/users/smarter/followers","following_url":"https://api.github.com/users/smarter/following{/other_user}","gists_url":"https://api.github.com/users/smarter/gists{/gist_id}","starred_url":"https://api.github.com/users/smarter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarter/subscriptions","organizations_url":"https://api.github.com/users/smarter/orgs","repos_url":"https://api.github.com/users/smarter/repos","events_url":"https://api.github.com/users/smarter/events{/privacy}","received_events_url":"https://api.github.com/users/smarter/received_events","type":"User","site_admin":false},"body":"Review by @DarkDimius\r\n\r\n***\r\nTo test this with sbt, see\r\nhttps://github.com/lampepfl/dotty/wiki/Using-Dotty-with-sbt\r\n\r\nThe following flags are added:\r\n - `-Yforce-sbt-phases`: Run the phases used by sbt for incremental compilation\r\n   (ExtractDependencies and ExtractAPI) even if the compiler is ran outside of\r\n   sbt, for debugging.\r\n - `-Ydump-sbt-inc`: For every compiled foo.scala, output the sbt API\r\n   representation and dependencies in foo.inc, implies -Yforce-sbt-phases.\r\n\r\nThis commit introduces two new phases which do not transform trees:\r\n- `ExtractDependencies` which extracts the dependency information of the current\r\n  compilation unit and sends it to sbt via callbacks\r\n- `ExtractAPI` which creates a representation of the API of the current compilation\r\n  unit and sends it to sbt via callbacks\r\n\r\nBriefly, when a file changes sbt will recompile it, if its API has\r\nchanged (determined by what `ExtractAPI` sent) then sbt will determine\r\nwhich reverse-dependencies (determined by what `ExtractDependencies`\r\nsent) of the API have to be recompiled depending on what changed.\r\nSee http://www.scala-sbt.org/0.13/docs/Understanding-Recompilation.html for\r\nmore information on how sbt incremental compilation works.\r\n\r\nThis phase was originally based on\r\nhttps://github.com/adriaanm/scala/tree/sbt-api-consolidate/src/compiler/scala/tools/sbt\r\nwhich attempts to integrate the sbt phases into scalac (and is itself based\r\non https://github.com/sbt/sbt/tree/0.13/compile/interface/src/main/scala/xsbt),\r\nbut it has been heavily refactored and adapted to Dotty. The main\r\nfunctional differences are:\r\n- ExtractDependencies runs right after Frontend (so that we don't lose\r\n  dependency informations because of the simplifications done by PostTyper),\r\n  but ExtractAPI runs right after PostTyper (so that SuperAccessors are\r\n  part of the API).\r\n- `ExtractAPI` only extract types as they are defined and never \"as seen\r\n  from\" some some specific prefix, see its documentation for more details.\r\n- `ExtractDependenciesTraverser` and `ExtractUsedNames` have been fused into\r\n  one tree traversal in `ExtractDependenciesCollector`.\r\n\r\nTODO: Try to run these phases in parallel with the rest of the compiler\r\npipeline since they're independent (except for the sbt callbacks in `GenBCode`) ?","created_at":"2016-05-02T23:07:06Z","updated_at":"2016-05-28T01:48:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e446bfb770c357637aa4646aa68435a94c27220b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/lampepfl/dotty/pulls/1244/commits","review_comments_url":"https://api.github.com/repos/lampepfl/dotty/pulls/1244/comments","review_comment_url":"https://api.github.com/repos/lampepfl/dotty/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lampepfl/dotty/issues/1244/comments","statuses_url":"https://api.github.com/repos/lampepfl/dotty/statuses/64d2b47d4d6e2af56acb294c42e793a203b50c94","head":{"label":"dotty-staging:add/sbt-phase","ref":"add/sbt-phase","sha":"64d2b47d4d6e2af56acb294c42e793a203b50c94","user":{"login":"dotty-staging","id":6998674,"avatar_url":"https://avatars.githubusercontent.com/u/6998674?v=3","gravatar_id":"","url":"https://api.github.com/users/dotty-staging","html_url":"https://github.com/dotty-staging","followers_url":"https://api.github.com/users/dotty-staging/followers","following_url":"https://api.github.com/users/dotty-staging/following{/other_user}","gists_url":"https://api.github.com/users/dotty-staging/gists{/gist_id}","starred_url":"https://api.github.com/users/dotty-staging/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotty-staging/subscriptions","organizations_url":"https://api.github.com/users/dotty-staging/orgs","repos_url":"https://api.github.com/users/dotty-staging/repos","events_url":"https://api.github.com/users/dotty-staging/events{/privacy}","received_events_url":"https://api.github.com/users/dotty-staging/received_events","type":"Organization","site_admin":false},"repo":{"id":17904384,"name":"dotty","full_name":"dotty-staging/dotty","owner":{"login":"dotty-staging","id":6998674,"avatar_url":"https://avatars.githubusercontent.com/u/6998674?v=3","gravatar_id":"","url":"https://api.github.com/users/dotty-staging","html_url":"https://github.com/dotty-staging","followers_url":"https://api.github.com/users/dotty-staging/followers","following_url":"https://api.github.com/users/dotty-staging/following{/other_user}","gists_url":"https://api.github.com/users/dotty-staging/gists{/gist_id}","starred_url":"https://api.github.com/users/dotty-staging/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotty-staging/subscriptions","organizations_url":"https://api.github.com/users/dotty-staging/orgs","repos_url":"https://api.github.com/users/dotty-staging/repos","events_url":"https://api.github.com/users/dotty-staging/events{/privacy}","received_events_url":"https://api.github.com/users/dotty-staging/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotty-staging/dotty","description":"Research platform for new language concepts and compiler technologies for Scala.","fork":true,"url":"https://api.github.com/repos/dotty-staging/dotty","forks_url":"https://api.github.com/repos/dotty-staging/dotty/forks","keys_url":"https://api.github.com/repos/dotty-staging/dotty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotty-staging/dotty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotty-staging/dotty/teams","hooks_url":"https://api.github.com/repos/dotty-staging/dotty/hooks","issue_events_url":"https://api.github.com/repos/dotty-staging/dotty/issues/events{/number}","events_url":"https://api.github.com/repos/dotty-staging/dotty/events","assignees_url":"https://api.github.com/repos/dotty-staging/dotty/assignees{/user}","branches_url":"https://api.github.com/repos/dotty-staging/dotty/branches{/branch}","tags_url":"https://api.github.com/repos/dotty-staging/dotty/tags","blobs_url":"https://api.github.com/repos/dotty-staging/dotty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotty-staging/dotty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotty-staging/dotty/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotty-staging/dotty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotty-staging/dotty/statuses/{sha}","languages_url":"https://api.github.com/repos/dotty-staging/dotty/languages","stargazers_url":"https://api.github.com/repos/dotty-staging/dotty/stargazers","contributors_url":"https://api.github.com/repos/dotty-staging/dotty/contributors","subscribers_url":"https://api.github.com/repos/dotty-staging/dotty/subscribers","subscription_url":"https://api.github.com/repos/dotty-staging/dotty/subscription","commits_url":"https://api.github.com/repos/dotty-staging/dotty/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotty-staging/dotty/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotty-staging/dotty/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotty-staging/dotty/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotty-staging/dotty/contents/{+path}","compare_url":"https://api.github.com/repos/dotty-staging/dotty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotty-staging/dotty/merges","archive_url":"https://api.github.com/repos/dotty-staging/dotty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotty-staging/dotty/downloads","issues_url":"https://api.github.com/repos/dotty-staging/dotty/issues{/number}","pulls_url":"https://api.github.com/repos/dotty-staging/dotty/pulls{/number}","milestones_url":"https://api.github.com/repos/dotty-staging/dotty/milestones{/number}","notifications_url":"https://api.github.com/repos/dotty-staging/dotty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotty-staging/dotty/labels{/name}","releases_url":"https://api.github.com/repos/dotty-staging/dotty/releases{/id}","deployments_url":"https://api.github.com/repos/dotty-staging/dotty/deployments","created_at":"2014-03-19T13:06:15Z","updated_at":"2015-11-30T13:03:19Z","pushed_at":"2016-05-27T21:27:24Z","git_url":"git://github.com/dotty-staging/dotty.git","ssh_url":"git@github.com:dotty-staging/dotty.git","clone_url":"https://github.com/dotty-staging/dotty.git","svn_url":"https://github.com/dotty-staging/dotty","homepage":"","size":19020,"stargazers_count":3,"watchers_count":3,"language":"Scala","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":3,"default_branch":"master"}},"base":{"label":"lampepfl:master","ref":"master","sha":"134ad7a6a172fec97dc438dd0aff3766a0f0944a","user":{"login":"lampepfl","id":2684793,"avatar_url":"https://avatars.githubusercontent.com/u/2684793?v=3","gravatar_id":"","url":"https://api.github.com/users/lampepfl","html_url":"https://github.com/lampepfl","followers_url":"https://api.github.com/users/lampepfl/followers","following_url":"https://api.github.com/users/lampepfl/following{/other_user}","gists_url":"https://api.github.com/users/lampepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/lampepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lampepfl/subscriptions","organizations_url":"https://api.github.com/users/lampepfl/orgs","repos_url":"https://api.github.com/users/lampepfl/repos","events_url":"https://api.github.com/users/lampepfl/events{/privacy}","received_events_url":"https://api.github.com/users/lampepfl/received_events","type":"Organization","site_admin":false},"repo":{"id":7035651,"name":"dotty","full_name":"lampepfl/dotty","owner":{"login":"lampepfl","id":2684793,"avatar_url":"https://avatars.githubusercontent.com/u/2684793?v=3","gravatar_id":"","url":"https://api.github.com/users/lampepfl","html_url":"https://github.com/lampepfl","followers_url":"https://api.github.com/users/lampepfl/followers","following_url":"https://api.github.com/users/lampepfl/following{/other_user}","gists_url":"https://api.github.com/users/lampepfl/gists{/gist_id}","starred_url":"https://api.github.com/users/lampepfl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lampepfl/subscriptions","organizations_url":"https://api.github.com/users/lampepfl/orgs","repos_url":"https://api.github.com/users/lampepfl/repos","events_url":"https://api.github.com/users/lampepfl/events{/privacy}","received_events_url":"https://api.github.com/users/lampepfl/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/lampepfl/dotty","description":"Research platform for new language concepts and compiler technologies for Scala.","fork":false,"url":"https://api.github.com/repos/lampepfl/dotty","forks_url":"https://api.github.com/repos/lampepfl/dotty/forks","keys_url":"https://api.github.com/repos/lampepfl/dotty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lampepfl/dotty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lampepfl/dotty/teams","hooks_url":"https://api.github.com/repos/lampepfl/dotty/hooks","issue_events_url":"https://api.github.com/repos/lampepfl/dotty/issues/events{/number}","events_url":"https://api.github.com/repos/lampepfl/dotty/events","assignees_url":"https://api.github.com/repos/lampepfl/dotty/assignees{/user}","branches_url":"https://api.github.com/repos/lampepfl/dotty/branches{/branch}","tags_url":"https://api.github.com/repos/lampepfl/dotty/tags","blobs_url":"https://api.github.com/repos/lampepfl/dotty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lampepfl/dotty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lampepfl/dotty/git/refs{/sha}","trees_url":"https://api.github.com/repos/lampepfl/dotty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lampepfl/dotty/statuses/{sha}","languages_url":"https://api.github.com/repos/lampepfl/dotty/languages","stargazers_url":"https://api.github.com/repos/lampepfl/dotty/stargazers","contributors_url":"https://api.github.com/repos/lampepfl/dotty/contributors","subscribers_url":"https://api.github.com/repos/lampepfl/dotty/subscribers","subscription_url":"https://api.github.com/repos/lampepfl/dotty/subscription","commits_url":"https://api.github.com/repos/lampepfl/dotty/commits{/sha}","git_commits_url":"https://api.github.com/repos/lampepfl/dotty/git/commits{/sha}","comments_url":"https://api.github.com/repos/lampepfl/dotty/comments{/number}","issue_comment_url":"https://api.github.com/repos/lampepfl/dotty/issues/comments{/number}","contents_url":"https://api.github.com/repos/lampepfl/dotty/contents/{+path}","compare_url":"https://api.github.com/repos/lampepfl/dotty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lampepfl/dotty/merges","archive_url":"https://api.github.com/repos/lampepfl/dotty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lampepfl/dotty/downloads","issues_url":"https://api.github.com/repos/lampepfl/dotty/issues{/number}","pulls_url":"https://api.github.com/repos/lampepfl/dotty/pulls{/number}","milestones_url":"https://api.github.com/repos/lampepfl/dotty/milestones{/number}","notifications_url":"https://api.github.com/repos/lampepfl/dotty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lampepfl/dotty/labels{/name}","releases_url":"https://api.github.com/repos/lampepfl/dotty/releases{/id}","deployments_url":"https://api.github.com/repos/lampepfl/dotty/deployments","created_at":"2012-12-06T12:57:33Z","updated_at":"2016-05-27T17:28:41Z","pushed_at":"2016-05-27T21:27:25Z","git_url":"git://github.com/lampepfl/dotty.git","ssh_url":"git@github.com:lampepfl/dotty.git","clone_url":"https://github.com/lampepfl/dotty.git","svn_url":"https://github.com/lampepfl/dotty","homepage":"","size":25042,"stargazers_count":931,"watchers_count":931,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":123,"mirror_url":null,"open_issues_count":152,"forks":123,"open_issues":152,"watchers":931,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1244"},"html":{"href":"https://github.com/lampepfl/dotty/pull/1244"},"issue":{"href":"https://api.github.com/repos/lampepfl/dotty/issues/1244"},"comments":{"href":"https://api.github.com/repos/lampepfl/dotty/issues/1244/comments"},"review_comments":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1244/comments"},"review_comment":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lampepfl/dotty/pulls/1244/commits"},"statuses":{"href":"https://api.github.com/repos/lampepfl/dotty/statuses/64d2b47d4d6e2af56acb294c42e793a203b50c94"}}}}
{"actor":{"display_login":"smarter"}}