{"action":"created","comment":{"url":"https://api.github.com/repos/scalameta/scalameta/pulls/comments/202201376","pull_request_review_id":136856172,"id":202201376,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMjIwMTM3Ng==","diff_hunk":"@@ -357,6 +358,22 @@ addCompilerPlugin(\"org.scalameta\" % \"semanticdb-scalac\" % \"4.0.0-M5\" cross Cross\n scalacOptions += \"-Yrangepos\"\n ```\n \n+### Javac compiler plugin\n+\n+The `semanticdb-javac` compiler plugin acts harvests and dumps SemanticDB information after the analyze phase of the Java compiler.\n+\n+To use it, add it to your build's compile classpath and add the following javac option:\n+\n+```\"-Xplugin:semanticdb <target-dir> --sourceroot <source-root>\"```","path":"semanticdb/semanticdb3/guide.md","position":18,"original_position":18,"commit_id":"dba6937ce2f3adbe2efb7812a2385fc1ee0fd610","original_commit_id":"dba6937ce2f3adbe2efb7812a2385fc1ee0fd610","user":{"login":"maxov","id":1261779,"node_id":"MDQ6VXNlcjEyNjE3Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1261779?v=4","gravatar_id":"","url":"https://api.github.com/users/maxov","html_url":"https://github.com/maxov","followers_url":"https://api.github.com/users/maxov/followers","following_url":"https://api.github.com/users/maxov/following{/other_user}","gists_url":"https://api.github.com/users/maxov/gists{/gist_id}","starred_url":"https://api.github.com/users/maxov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxov/subscriptions","organizations_url":"https://api.github.com/users/maxov/orgs","repos_url":"https://api.github.com/users/maxov/repos","events_url":"https://api.github.com/users/maxov/events{/privacy}","received_events_url":"https://api.github.com/users/maxov/received_events","type":"User","site_admin":false},"body":"It doesn't appear that compiler options are part of the supported javac API, so I cannot get the output directory for classfiles.","created_at":"2018-07-12T22:46:11Z","updated_at":"2018-07-12T22:46:11Z","html_url":"https://github.com/scalameta/scalameta/pull/1687#discussion_r202201376","pull_request_url":"https://api.github.com/repos/scalameta/scalameta/pulls/1687","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/scalameta/scalameta/pulls/comments/202201376"},"html":{"href":"https://github.com/scalameta/scalameta/pull/1687#discussion_r202201376"},"pull_request":{"href":"https://api.github.com/repos/scalameta/scalameta/pulls/1687"}},"in_reply_to_id":202192348},"pull_request":{"url":"https://api.github.com/repos/scalameta/scalameta/pulls/1687","id":200501190,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwNTAxMTkw","html_url":"https://github.com/scalameta/scalameta/pull/1687","diff_url":"https://github.com/scalameta/scalameta/pull/1687.diff","patch_url":"https://github.com/scalameta/scalameta/pull/1687.patch","issue_url":"https://api.github.com/repos/scalameta/scalameta/issues/1687","number":1687,"state":"open","locked":false,"title":"Implement a semanticdb javac compiler plugin","user":{"login":"maxov","id":1261779,"node_id":"MDQ6VXNlcjEyNjE3Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1261779?v=4","gravatar_id":"","url":"https://api.github.com/users/maxov","html_url":"https://github.com/maxov","followers_url":"https://api.github.com/users/maxov/followers","following_url":"https://api.github.com/users/maxov/following{/other_user}","gists_url":"https://api.github.com/users/maxov/gists{/gist_id}","starred_url":"https://api.github.com/users/maxov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxov/subscriptions","organizations_url":"https://api.github.com/users/maxov/orgs","repos_url":"https://api.github.com/users/maxov/repos","events_url":"https://api.github.com/users/maxov/events{/privacy}","received_events_url":"https://api.github.com/users/maxov/received_events","type":"User","site_admin":false},"body":"This PR creates a javac compiler plugin in the semanticdb-javac project that generates semanticdb files, much like for semanticdb-scalac. Just like the tests for metac, I also added some expect tests and a diff test with metacp (and its diff with metacp is currently empty, yay!)\r\n\r\nSome points of interest:\r\n- In order to properly run the plugin on java compile, I have to [manually set javaHome](https://github.com/scalameta/scalameta/compare/master...maxov:semanticdb-javac#diff-fdc3abdfd754eeb24090dbd90aeec2ceR451). This seems to be related to the fact that sbt doesn't fork the java compiler by default and runs it in the same JVM, which I think means that it doesn't see the plugin on the classpath. However, I was unable to troubleshoot this further because sbt doesn't even spit out errors for javac, perhaps due to https://github.com/sbt/zinc/issues/520.\r\n- I need to do some postprocessing for the javac-metacp [diff test](https://github.com/scalameta/scalameta/compare/master...maxov:semanticdb-javac#diff-1adf10a155e25432e696a2bad27ed9f2R368), because metacp emits names of enum constructor parameters as `$enum$name`, even with the `-parameters` compiler flag\r\n","created_at":"2018-07-10T19:33:52Z","updated_at":"2018-07-12T22:46:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8ee3a2b8a69eac3bdcdac23769749c462b75a249","assignee":{"login":"olafurpg","id":1408093,"node_id":"MDQ6VXNlcjE0MDgwOTM=","avatar_url":"https://avatars0.githubusercontent.com/u/1408093?v=4","gravatar_id":"","url":"https://api.github.com/users/olafurpg","html_url":"https://github.com/olafurpg","followers_url":"https://api.github.com/users/olafurpg/followers","following_url":"https://api.github.com/users/olafurpg/following{/other_user}","gists_url":"https://api.github.com/users/olafurpg/gists{/gist_id}","starred_url":"https://api.github.com/users/olafurpg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olafurpg/subscriptions","organizations_url":"https://api.github.com/users/olafurpg/orgs","repos_url":"https://api.github.com/users/olafurpg/repos","events_url":"https://api.github.com/users/olafurpg/events{/privacy}","received_events_url":"https://api.github.com/users/olafurpg/received_events","type":"User","site_admin":false},"assignees":[{"login":"olafurpg","id":1408093,"node_id":"MDQ6VXNlcjE0MDgwOTM=","avatar_url":"https://avatars0.githubusercontent.com/u/1408093?v=4","gravatar_id":"","url":"https://api.github.com/users/olafurpg","html_url":"https://github.com/olafurpg","followers_url":"https://api.github.com/users/olafurpg/followers","following_url":"https://api.github.com/users/olafurpg/following{/other_user}","gists_url":"https://api.github.com/users/olafurpg/gists{/gist_id}","starred_url":"https://api.github.com/users/olafurpg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olafurpg/subscriptions","organizations_url":"https://api.github.com/users/olafurpg/orgs","repos_url":"https://api.github.com/users/olafurpg/repos","events_url":"https://api.github.com/users/olafurpg/events{/privacy}","received_events_url":"https://api.github.com/users/olafurpg/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":992062027,"node_id":"MDU6TGFiZWw5OTIwNjIwMjc=","url":"https://api.github.com/repos/scalameta/scalameta/labels/Javac","name":"Javac","color":"006f75","default":false}],"milestone":{"url":"https://api.github.com/repos/scalameta/scalameta/milestones/26","html_url":"https://github.com/scalameta/scalameta/milestone/26","labels_url":"https://api.github.com/repos/scalameta/scalameta/milestones/26/labels","id":3253215,"node_id":"MDk6TWlsZXN0b25lMzI1MzIxNQ==","number":26,"title":"4.0.0-RC1","description":"By the milestone due date, we're planning to close all the tickets in this milestone (either by fixing or by unassigning the milestone).\r\n\r\nThen, we will impose a code freeze to everything except fixes to regressions from 3.x and will be cutting further RC releases weekly. After a week with no regressions, we will promote the latest RC to final and lift the code freeze.","creator":{"login":"olafurpg","id":1408093,"node_id":"MDQ6VXNlcjE0MDgwOTM=","avatar_url":"https://avatars0.githubusercontent.com/u/1408093?v=4","gravatar_id":"","url":"https://api.github.com/users/olafurpg","html_url":"https://github.com/olafurpg","followers_url":"https://api.github.com/users/olafurpg/followers","following_url":"https://api.github.com/users/olafurpg/following{/other_user}","gists_url":"https://api.github.com/users/olafurpg/gists{/gist_id}","starred_url":"https://api.github.com/users/olafurpg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olafurpg/subscriptions","organizations_url":"https://api.github.com/users/olafurpg/orgs","repos_url":"https://api.github.com/users/olafurpg/repos","events_url":"https://api.github.com/users/olafurpg/events{/privacy}","received_events_url":"https://api.github.com/users/olafurpg/received_events","type":"User","site_admin":false},"open_issues":30,"closed_issues":134,"state":"open","created_at":"2018-04-09T16:54:12Z","updated_at":"2018-07-12T18:15:17Z","due_on":"2018-08-20T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/scalameta/scalameta/pulls/1687/commits","review_comments_url":"https://api.github.com/repos/scalameta/scalameta/pulls/1687/comments","review_comment_url":"https://api.github.com/repos/scalameta/scalameta/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scalameta/scalameta/issues/1687/comments","statuses_url":"https://api.github.com/repos/scalameta/scalameta/statuses/dba6937ce2f3adbe2efb7812a2385fc1ee0fd610","head":{"label":"maxov:semanticdb-javac","ref":"semanticdb-javac","sha":"dba6937ce2f3adbe2efb7812a2385fc1ee0fd610","user":{"login":"maxov","id":1261779,"node_id":"MDQ6VXNlcjEyNjE3Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1261779?v=4","gravatar_id":"","url":"https://api.github.com/users/maxov","html_url":"https://github.com/maxov","followers_url":"https://api.github.com/users/maxov/followers","following_url":"https://api.github.com/users/maxov/following{/other_user}","gists_url":"https://api.github.com/users/maxov/gists{/gist_id}","starred_url":"https://api.github.com/users/maxov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxov/subscriptions","organizations_url":"https://api.github.com/users/maxov/orgs","repos_url":"https://api.github.com/users/maxov/repos","events_url":"https://api.github.com/users/maxov/events{/privacy}","received_events_url":"https://api.github.com/users/maxov/received_events","type":"User","site_admin":false},"repo":{"id":140042650,"node_id":"MDEwOlJlcG9zaXRvcnkxNDAwNDI2NTA=","name":"scalameta","full_name":"maxov/scalameta","owner":{"login":"maxov","id":1261779,"node_id":"MDQ6VXNlcjEyNjE3Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1261779?v=4","gravatar_id":"","url":"https://api.github.com/users/maxov","html_url":"https://github.com/maxov","followers_url":"https://api.github.com/users/maxov/followers","following_url":"https://api.github.com/users/maxov/following{/other_user}","gists_url":"https://api.github.com/users/maxov/gists{/gist_id}","starred_url":"https://api.github.com/users/maxov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxov/subscriptions","organizations_url":"https://api.github.com/users/maxov/orgs","repos_url":"https://api.github.com/users/maxov/repos","events_url":"https://api.github.com/users/maxov/events{/privacy}","received_events_url":"https://api.github.com/users/maxov/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/maxov/scalameta","description":"Library to read, analyze, transform and generate Scala programs","fork":true,"url":"https://api.github.com/repos/maxov/scalameta","forks_url":"https://api.github.com/repos/maxov/scalameta/forks","keys_url":"https://api.github.com/repos/maxov/scalameta/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maxov/scalameta/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maxov/scalameta/teams","hooks_url":"https://api.github.com/repos/maxov/scalameta/hooks","issue_events_url":"https://api.github.com/repos/maxov/scalameta/issues/events{/number}","events_url":"https://api.github.com/repos/maxov/scalameta/events","assignees_url":"https://api.github.com/repos/maxov/scalameta/assignees{/user}","branches_url":"https://api.github.com/repos/maxov/scalameta/branches{/branch}","tags_url":"https://api.github.com/repos/maxov/scalameta/tags","blobs_url":"https://api.github.com/repos/maxov/scalameta/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maxov/scalameta/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maxov/scalameta/git/refs{/sha}","trees_url":"https://api.github.com/repos/maxov/scalameta/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maxov/scalameta/statuses/{sha}","languages_url":"https://api.github.com/repos/maxov/scalameta/languages","stargazers_url":"https://api.github.com/repos/maxov/scalameta/stargazers","contributors_url":"https://api.github.com/repos/maxov/scalameta/contributors","subscribers_url":"https://api.github.com/repos/maxov/scalameta/subscribers","subscription_url":"https://api.github.com/repos/maxov/scalameta/subscription","commits_url":"https://api.github.com/repos/maxov/scalameta/commits{/sha}","git_commits_url":"https://api.github.com/repos/maxov/scalameta/git/commits{/sha}","comments_url":"https://api.github.com/repos/maxov/scalameta/comments{/number}","issue_comment_url":"https://api.github.com/repos/maxov/scalameta/issues/comments{/number}","contents_url":"https://api.github.com/repos/maxov/scalameta/contents/{+path}","compare_url":"https://api.github.com/repos/maxov/scalameta/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maxov/scalameta/merges","archive_url":"https://api.github.com/repos/maxov/scalameta/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maxov/scalameta/downloads","issues_url":"https://api.github.com/repos/maxov/scalameta/issues{/number}","pulls_url":"https://api.github.com/repos/maxov/scalameta/pulls{/number}","milestones_url":"https://api.github.com/repos/maxov/scalameta/milestones{/number}","notifications_url":"https://api.github.com/repos/maxov/scalameta/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maxov/scalameta/labels{/name}","releases_url":"https://api.github.com/repos/maxov/scalameta/releases{/id}","deployments_url":"https://api.github.com/repos/maxov/scalameta/deployments","created_at":"2018-07-07T01:15:52Z","updated_at":"2018-07-07T01:15:55Z","pushed_at":"2018-07-12T21:05:06Z","git_url":"git://github.com/maxov/scalameta.git","ssh_url":"git@github.com:maxov/scalameta.git","clone_url":"https://github.com/maxov/scalameta.git","svn_url":"https://github.com/maxov/scalameta","homepage":"http://scalameta.org/","size":14726,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"scalameta:master","ref":"master","sha":"0a7bee1a1e85597f614f86a8a7a80d5641c4d1e0","user":{"login":"scalameta","id":7526438,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1MjY0Mzg=","avatar_url":"https://avatars1.githubusercontent.com/u/7526438?v=4","gravatar_id":"","url":"https://api.github.com/users/scalameta","html_url":"https://github.com/scalameta","followers_url":"https://api.github.com/users/scalameta/followers","following_url":"https://api.github.com/users/scalameta/following{/other_user}","gists_url":"https://api.github.com/users/scalameta/gists{/gist_id}","starred_url":"https://api.github.com/users/scalameta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scalameta/subscriptions","organizations_url":"https://api.github.com/users/scalameta/orgs","repos_url":"https://api.github.com/users/scalameta/repos","events_url":"https://api.github.com/users/scalameta/events{/privacy}","received_events_url":"https://api.github.com/users/scalameta/received_events","type":"Organization","site_admin":false},"repo":{"id":20903383,"node_id":"MDEwOlJlcG9zaXRvcnkyMDkwMzM4Mw==","name":"scalameta","full_name":"scalameta/scalameta","owner":{"login":"scalameta","id":7526438,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1MjY0Mzg=","avatar_url":"https://avatars1.githubusercontent.com/u/7526438?v=4","gravatar_id":"","url":"https://api.github.com/users/scalameta","html_url":"https://github.com/scalameta","followers_url":"https://api.github.com/users/scalameta/followers","following_url":"https://api.github.com/users/scalameta/following{/other_user}","gists_url":"https://api.github.com/users/scalameta/gists{/gist_id}","starred_url":"https://api.github.com/users/scalameta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scalameta/subscriptions","organizations_url":"https://api.github.com/users/scalameta/orgs","repos_url":"https://api.github.com/users/scalameta/repos","events_url":"https://api.github.com/users/scalameta/events{/privacy}","received_events_url":"https://api.github.com/users/scalameta/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scalameta/scalameta","description":"Library to read, analyze, transform and generate Scala programs","fork":false,"url":"https://api.github.com/repos/scalameta/scalameta","forks_url":"https://api.github.com/repos/scalameta/scalameta/forks","keys_url":"https://api.github.com/repos/scalameta/scalameta/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scalameta/scalameta/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scalameta/scalameta/teams","hooks_url":"https://api.github.com/repos/scalameta/scalameta/hooks","issue_events_url":"https://api.github.com/repos/scalameta/scalameta/issues/events{/number}","events_url":"https://api.github.com/repos/scalameta/scalameta/events","assignees_url":"https://api.github.com/repos/scalameta/scalameta/assignees{/user}","branches_url":"https://api.github.com/repos/scalameta/scalameta/branches{/branch}","tags_url":"https://api.github.com/repos/scalameta/scalameta/tags","blobs_url":"https://api.github.com/repos/scalameta/scalameta/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scalameta/scalameta/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scalameta/scalameta/git/refs{/sha}","trees_url":"https://api.github.com/repos/scalameta/scalameta/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scalameta/scalameta/statuses/{sha}","languages_url":"https://api.github.com/repos/scalameta/scalameta/languages","stargazers_url":"https://api.github.com/repos/scalameta/scalameta/stargazers","contributors_url":"https://api.github.com/repos/scalameta/scalameta/contributors","subscribers_url":"https://api.github.com/repos/scalameta/scalameta/subscribers","subscription_url":"https://api.github.com/repos/scalameta/scalameta/subscription","commits_url":"https://api.github.com/repos/scalameta/scalameta/commits{/sha}","git_commits_url":"https://api.github.com/repos/scalameta/scalameta/git/commits{/sha}","comments_url":"https://api.github.com/repos/scalameta/scalameta/comments{/number}","issue_comment_url":"https://api.github.com/repos/scalameta/scalameta/issues/comments{/number}","contents_url":"https://api.github.com/repos/scalameta/scalameta/contents/{+path}","compare_url":"https://api.github.com/repos/scalameta/scalameta/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scalameta/scalameta/merges","archive_url":"https://api.github.com/repos/scalameta/scalameta/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scalameta/scalameta/downloads","issues_url":"https://api.github.com/repos/scalameta/scalameta/issues{/number}","pulls_url":"https://api.github.com/repos/scalameta/scalameta/pulls{/number}","milestones_url":"https://api.github.com/repos/scalameta/scalameta/milestones{/number}","notifications_url":"https://api.github.com/repos/scalameta/scalameta/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scalameta/scalameta/labels{/name}","releases_url":"https://api.github.com/repos/scalameta/scalameta/releases{/id}","deployments_url":"https://api.github.com/repos/scalameta/scalameta/deployments","created_at":"2014-06-16T23:00:32Z","updated_at":"2018-07-12T18:22:02Z","pushed_at":"2018-07-12T22:27:32Z","git_url":"git://github.com/scalameta/scalameta.git","ssh_url":"git@github.com:scalameta/scalameta.git","clone_url":"https://github.com/scalameta/scalameta.git","svn_url":"https://github.com/scalameta/scalameta","homepage":"http://scalameta.org/","size":14706,"stargazers_count":640,"watchers_count":640,"language":"Scala","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":138,"mirror_url":null,"archived":false,"open_issues_count":144,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":138,"open_issues":144,"watchers":640,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scalameta/scalameta/pulls/1687"},"html":{"href":"https://github.com/scalameta/scalameta/pull/1687"},"issue":{"href":"https://api.github.com/repos/scalameta/scalameta/issues/1687"},"comments":{"href":"https://api.github.com/repos/scalameta/scalameta/issues/1687/comments"},"review_comments":{"href":"https://api.github.com/repos/scalameta/scalameta/pulls/1687/comments"},"review_comment":{"href":"https://api.github.com/repos/scalameta/scalameta/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scalameta/scalameta/pulls/1687/commits"},"statuses":{"href":"https://api.github.com/repos/scalameta/scalameta/statuses/dba6937ce2f3adbe2efb7812a2385fc1ee0fd610"}},"author_association":"NONE"}}
{"actor":{"display_login":"maxov"}}