{"action":"created","issue":{"url":"https://api.github.com/repos/ensime/ensime-server/issues/1190","labels_url":"https://api.github.com/repos/ensime/ensime-server/issues/1190/labels{/name}","comments_url":"https://api.github.com/repos/ensime/ensime-server/issues/1190/comments","events_url":"https://api.github.com/repos/ensime/ensime-server/issues/1190/events","html_url":"https://github.com/ensime/ensime-server/issues/1190","id":123178223,"number":1190,"title":"correctly index methods by FQN and Descriptor","user":{"login":"fommil","id":1914041,"avatar_url":"https://avatars.githubusercontent.com/u/1914041?v=3","gravatar_id":"","url":"https://api.github.com/users/fommil","html_url":"https://github.com/fommil","followers_url":"https://api.github.com/users/fommil/followers","following_url":"https://api.github.com/users/fommil/following{/other_user}","gists_url":"https://api.github.com/users/fommil/gists{/gist_id}","starred_url":"https://api.github.com/users/fommil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fommil/subscriptions","organizations_url":"https://api.github.com/users/fommil/orgs","repos_url":"https://api.github.com/users/fommil/repos","events_url":"https://api.github.com/users/fommil/events{/privacy}","received_events_url":"https://api.github.com/users/fommil/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ensime/ensime-server/labels/In%20progress","name":"In progress","color":"009800"}],"state":"open","locked":false,"assignee":{"login":"fommil","id":1914041,"avatar_url":"https://avatars.githubusercontent.com/u/1914041?v=3","gravatar_id":"","url":"https://api.github.com/users/fommil","html_url":"https://github.com/fommil","followers_url":"https://api.github.com/users/fommil/followers","following_url":"https://api.github.com/users/fommil/following{/other_user}","gists_url":"https://api.github.com/users/fommil/gists{/gist_id}","starred_url":"https://api.github.com/users/fommil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fommil/subscriptions","organizations_url":"https://api.github.com/users/fommil/orgs","repos_url":"https://api.github.com/users/fommil/repos","events_url":"https://api.github.com/users/fommil/events{/privacy}","received_events_url":"https://api.github.com/users/fommil/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/ensime/ensime-server/milestones/8","html_url":"https://github.com/ensime/ensime-server/milestones/Stable%201.0","labels_url":"https://api.github.com/repos/ensime/ensime-server/milestones/8/labels","id":916638,"number":8,"title":"Stable 1.0","description":"A stable release which will have permanent versions of the sbt-plugin and server for scala 2.9.2, 2.9.3, 2.10 and 2.11 in maven central, and a corresponding stable release in MELPA.\r\n\r\nThis will be the last version to support scala 2.9 and only serious bugfixes will cause new versions to be released.\r\n\r\nWhen released, the rolling release will become more experimental and the protocol is likely to be redesigned.\r\n\r\nTickets should only be added to this milestone if you actively plan to work on them.","creator":{"login":"fommil","id":1914041,"avatar_url":"https://avatars.githubusercontent.com/u/1914041?v=3","gravatar_id":"","url":"https://api.github.com/users/fommil","html_url":"https://github.com/fommil","followers_url":"https://api.github.com/users/fommil/followers","following_url":"https://api.github.com/users/fommil/following{/other_user}","gists_url":"https://api.github.com/users/fommil/gists{/gist_id}","starred_url":"https://api.github.com/users/fommil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fommil/subscriptions","organizations_url":"https://api.github.com/users/fommil/orgs","repos_url":"https://api.github.com/users/fommil/repos","events_url":"https://api.github.com/users/fommil/events{/privacy}","received_events_url":"https://api.github.com/users/fommil/received_events","type":"User","site_admin":false},"open_issues":14,"closed_issues":65,"state":"open","created_at":"2014-12-29T12:44:02Z","updated_at":"2016-01-02T15:50:16Z","due_on":null,"closed_at":null},"comments":13,"created_at":"2015-12-20T19:13:57Z","updated_at":"2016-01-02T22:41:28Z","closed_at":null,"body":"I'm currently working on this as part of the Graphpocalyse but it might make sense to split this out as a separate piece of work and support it in H2 first of all.\r\n\r\nWe can trivially get the FQN and Descriptor from the bytecode, but getting it from the scalac `Symbol` is tricky.\r\n\r\n`Helpers.symbolIndexerName` and `DocFinding.javaFqn` should really be sharing the same logic, which could be implemented in the `FullyQualifiedName` domain model... and then translated into `Descriptor`s (logic exists) and `DocFqn`s.\r\n\r\nIn any case, my WIP is in this general area https://github.com/fommil/ensime-server/blob/graphpocalypse/core/src/main/scala/org/ensime/model/Helpers.scala#L128\r\n\r\nAnd there are a bunch of other places in the code where we do something similar, so obviously there is a good opportunity for code reuse. I wonder how Scala IDE does this, if it does it at all. Surely `scalac` knows how to do this in the bytecode output layers."},"comment":{"url":"https://api.github.com/repos/ensime/ensime-server/issues/comments/168435768","html_url":"https://github.com/ensime/ensime-server/issues/1190#issuecomment-168435768","issue_url":"https://api.github.com/repos/ensime/ensime-server/issues/1190","id":168435768,"user":{"login":"paulp","id":9135,"avatar_url":"https://avatars.githubusercontent.com/u/9135?v=3","gravatar_id":"","url":"https://api.github.com/users/paulp","html_url":"https://github.com/paulp","followers_url":"https://api.github.com/users/paulp/followers","following_url":"https://api.github.com/users/paulp/following{/other_user}","gists_url":"https://api.github.com/users/paulp/gists{/gist_id}","starred_url":"https://api.github.com/users/paulp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulp/subscriptions","organizations_url":"https://api.github.com/users/paulp/orgs","repos_url":"https://api.github.com/users/paulp/repos","events_url":"https://api.github.com/users/paulp/events{/privacy}","received_events_url":"https://api.github.com/users/paulp/received_events","type":"User","site_admin":false},"created_at":"2016-01-02T22:41:28Z","updated_at":"2016-01-02T22:41:28Z","body":"In principle `javaClassName` (which should just be `javaBinaryName.toString`) is as close to canonical as you will find, since it's the method used in bytecode generation. Probably you can still be burned by phase issues."}}