{"action":"created","issue":{"url":"https://api.github.com/repos/typesafehub/migration-manager/issues/78","labels_url":"https://api.github.com/repos/typesafehub/migration-manager/issues/78/labels{/name}","comments_url":"https://api.github.com/repos/typesafehub/migration-manager/issues/78/comments","events_url":"https://api.github.com/repos/typesafehub/migration-manager/issues/78/events","html_url":"https://github.com/typesafehub/migration-manager/issues/78","id":102452824,"number":78,"title":"Scala 2.12 support","user":{"login":"SethTisue","id":161079,"avatar_url":"https://avatars.githubusercontent.com/u/161079?v=3","gravatar_id":"","url":"https://api.github.com/users/SethTisue","html_url":"https://github.com/SethTisue","followers_url":"https://api.github.com/users/SethTisue/followers","following_url":"https://api.github.com/users/SethTisue/following{/other_user}","gists_url":"https://api.github.com/users/SethTisue/gists{/gist_id}","starred_url":"https://api.github.com/users/SethTisue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SethTisue/subscriptions","organizations_url":"https://api.github.com/users/SethTisue/orgs","repos_url":"https://api.github.com/users/SethTisue/repos","events_url":"https://api.github.com/users/SethTisue/events{/privacy}","received_events_url":"https://api.github.com/users/SethTisue/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-08-21T20:04:43Z","updated_at":"2015-08-22T06:41:33Z","closed_at":null,"body":"@sjrd [reports that MiMa is just about useless with 2.12.0-M2](https://groups.google.com/d/msg/scala-internals/l3-hcg18crw/GWZbEDCfEAAJ).\r\n\r\nfor now, 2.12 is very much a moving target and the way lambdas and other things are encoded in bytecode is still changing. so it may or may not make sense for someone to attempt to tackle this right now, but obviously it will need tackling eventually."},"comment":{"url":"https://api.github.com/repos/typesafehub/migration-manager/issues/comments/133645033","html_url":"https://github.com/typesafehub/migration-manager/issues/78#issuecomment-133645033","issue_url":"https://api.github.com/repos/typesafehub/migration-manager/issues/78","id":133645033,"user":{"login":"sjrd","id":535934,"avatar_url":"https://avatars.githubusercontent.com/u/535934?v=3","gravatar_id":"","url":"https://api.github.com/users/sjrd","html_url":"https://github.com/sjrd","followers_url":"https://api.github.com/users/sjrd/followers","following_url":"https://api.github.com/users/sjrd/following{/other_user}","gists_url":"https://api.github.com/users/sjrd/gists{/gist_id}","starred_url":"https://api.github.com/users/sjrd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjrd/subscriptions","organizations_url":"https://api.github.com/users/sjrd/orgs","repos_url":"https://api.github.com/users/sjrd/repos","events_url":"https://api.github.com/users/sjrd/events{/privacy}","received_events_url":"https://api.github.com/users/sjrd/received_events","type":"User","site_admin":false},"created_at":"2015-08-22T06:41:33Z","updated_at":"2015-08-22T06:41:33Z","body":"The issue is that MiMa reports many more spurious incompatibility errors related to anonymous functions. scalac 2.12 generates one (private but public-ized) method in the enclosing class for the body of every anonymous function. If you add, move, or remove anonymous functions within a method, scalac will now produce a different set of such methods, and those produce binary incompatibilities as identified by MiMa. Although, in fact, we know they cannot be called from anywhere but the method body, since they have been generated by scalac.\r\n\r\nUnlike other sources of synthetic-method-causes-bin-incompat issues, this one produces so many false positives that humanly sorting through those (to whitelist them) is impractical. See [the gist with the reported errors](https://gist.github.com/sjrd/7050c82578a31f29ef88).\r\n\r\nAs of now, I am not 100% sure where the responsibilities to fix this lie. It might be scalac's fault, or MiMa's fault, or they might have shared responsibilities in the problem.\r\n\r\nAn obvious (but not well thought-about; might be too permissive) fix with the way 2.12.0-M2 emits lambdas would be to blindly ignore any method containing `$anonfun$` in its name, assuming that comes from an anonymous function."}}