{"action":"created","issue":{"url":"https://api.github.com/repos/bazelbuild/bazel/issues/648","labels_url":"https://api.github.com/repos/bazelbuild/bazel/issues/648/labels{/name}","comments_url":"https://api.github.com/repos/bazelbuild/bazel/issues/648/comments","events_url":"https://api.github.com/repos/bazelbuild/bazel/issues/648/events","html_url":"https://github.com/bazelbuild/bazel/pull/648","id":118649800,"number":648,"title":"Improve the scala skylark rule: support macros, don't use system scalac","user":{"login":"johnynek","id":67958,"avatar_url":"https://avatars.githubusercontent.com/u/67958?v=3","gravatar_id":"","url":"https://api.github.com/users/johnynek","html_url":"https://github.com/johnynek","followers_url":"https://api.github.com/users/johnynek/followers","following_url":"https://api.github.com/users/johnynek/following{/other_user}","gists_url":"https://api.github.com/users/johnynek/gists{/gist_id}","starred_url":"https://api.github.com/users/johnynek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnynek/subscriptions","organizations_url":"https://api.github.com/users/johnynek/orgs","repos_url":"https://api.github.com/users/johnynek/repos","events_url":"https://api.github.com/users/johnynek/events{/privacy}","received_events_url":"https://api.github.com/users/johnynek/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-24T16:35:14Z","updated_at":"2015-11-24T17:30:55Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/bazelbuild/bazel/pulls/648","html_url":"https://github.com/bazelbuild/bazel/pull/648","diff_url":"https://github.com/bazelbuild/bazel/pull/648.diff","patch_url":"https://github.com/bazelbuild/bazel/pull/648.patch"},"body":"This is a step forward for a better scala rule.\r\n\r\n1. It uses ijar to avoid recompiling downstream targets if there have been no API changes.\r\n2. It supports scala macros somewhat (which can't be ijared because they have code that runs at compile time). You must use `scala_macro_library` for a target that includes macros.\r\n3. It uses a scala version that is downloaded by bazel, not the system scalac.\r\n\r\nIssues:\r\n1. It does not yet support tests. I am thinking scalatest, which seems to be the most popular scala test framework, but it has a number of dependencies which will need to be added to WORKSPACE or perhaps we need a tgz file with all the binary deps, but then someone will need to maintain those.\r\n\r\n2. The skylark code is bit duplicative. I'm not 100% sure what operations are supported on the data structures, so there are probably much cleaner ways to implement this code."},"comment":{"url":"https://api.github.com/repos/bazelbuild/bazel/issues/comments/159349245","html_url":"https://github.com/bazelbuild/bazel/pull/648#issuecomment-159349245","issue_url":"https://api.github.com/repos/bazelbuild/bazel/issues/648","id":159349245,"user":{"login":"kchodorow","id":17042,"avatar_url":"https://avatars.githubusercontent.com/u/17042?v=3","gravatar_id":"","url":"https://api.github.com/users/kchodorow","html_url":"https://github.com/kchodorow","followers_url":"https://api.github.com/users/kchodorow/followers","following_url":"https://api.github.com/users/kchodorow/following{/other_user}","gists_url":"https://api.github.com/users/kchodorow/gists{/gist_id}","starred_url":"https://api.github.com/users/kchodorow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kchodorow/subscriptions","organizations_url":"https://api.github.com/users/kchodorow/orgs","repos_url":"https://api.github.com/users/kchodorow/repos","events_url":"https://api.github.com/users/kchodorow/events{/privacy}","received_events_url":"https://api.github.com/users/kchodorow/received_events","type":"User","site_admin":false},"created_at":"2015-11-24T17:30:55Z","updated_at":"2015-11-24T17:30:55Z","body":"Thanks for the contribution, glad you got it working!  Could you import this into [Gerrit](http://bazel.io/contributing.html)?  (We prefer it for non-trivial patches.)  "}}