{"push_id":544579003,"size":13,"distinct_size":1,"ref":"refs/heads/master","head":"5dd0634064162c2a5488f9a5282d44b58ceadabe","before":"00d5b99ecc6fb6ee294dd470228aec8d7ac6d9ca","commits":[{"sha":"12074b41d9ff9663694d4f339f5977ca8fc12bc4","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"temporarily removes monadic error handling UI\n\nThis is something that Denys and I discussed quite a lot last spring.\nWe haven't arrived at an agreement wrt how fallible APIs should be expressed\n(via exceptions or via monads), so we implemented a compromise solution,\nwhich abstracted away error handling behind an implicit strategy, which\nthe user could then specify.\n\nAlong with the benefit of flexibility that would enable us to do practical\nexperiments on error handling strategies, this solution also brought\nsignificant notational overhead. For example, a method that transformed\na seq of types to a seq of classes they point to, required 10+ loc [1]\nas well as a 10+ loc helper [2] to get job done instead of straightforward <5 loc.\n\nWhile I do think that monadic error handling is an interesting idea,\nwhich is definitely worth experimenting with, in its current incarnation\nit's going to (telling this from my own experience!!) significantly slow down\nthe implementation of semantic API (even though our users could just import\n`errors.throwExceptions` if they didn't want to pay for extra encapsulation\nand compositionality, we were forced to use monads to be compatible with\nboth error handling styles).\n\nTherefore I'm temporarily rolling back our error handling UI to use exceptions.\nI'm not entirely happy with this decision (though the relief of keeping code\nsimple is real), so looking forward to the day when we can experiment with this\nagain and maybe find better syntactic ways to tap into the power of monads.\n\n[1] https://github.com/scalameta/scalameta/blob/8bf99afa43e2ab1181573c50a12cd321c884019f/reflection/semantic/package.scala#L51\n[2] https://github.com/scalameta/scalameta/blob/8bf99afa43e2ab1181573c50a12cd321c884019f/foundation/errors/ErrorHandler.scala#L16","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/12074b41d9ff9663694d4f339f5977ca8fc12bc4"},{"sha":"8b7983d5c70b3d825eb2c2c5eb86e9ab1d52e0c0","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"s/palladium/scala.meta/g","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/8b7983d5c70b3d825eb2c2c5eb86e9ab1d52e0c0"},{"sha":"d3f2fdd97b31a9e9b85ac7bfb2c94d19dbbe669d","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"kills todo.md\n\nSome entries there are partially obsolete, some are so obsolete that they\nare actively harming by creating confusion. It looks like it's much healthier\nto maintain a todo list outside the code repository, which is what I'm\ngoing to do starting from now.","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/d3f2fdd97b31a9e9b85ac7bfb2c94d19dbbe669d"},{"sha":"b9a07a26e0c29ac7cf42850e2bb45e84a8e56fc7","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"ugliness.md => syntaxwarts.md\n\nMakes the name clearer.","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/b9a07a26e0c29ac7cf42850e2bb45e84a8e56fc7"},{"sha":"7428804a022f73d4fe79030810092dbb3ab184c7","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"explicitly explains how to correlate scala.meta and native trees","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/7428804a022f73d4fe79030810092dbb3ab184c7"},{"sha":"6d8f07ce0ba9bc74023b497f11b97ccfbe38455e","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"scratchpad is now Seq[Any], not Map[Host, Seq[Any]]\n\nHaving a Map provides theoretical safety against host mixups, but in practice\nthis doesn't matter anyway, because we're not on that level of technology.","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/6d8f07ce0ba9bc74023b497f11b97ccfbe38455e"},{"sha":"1d2ece5209d7159d00c44397db549a0ad3fc10ff","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"semantic.Host => semantic.Context, macros.Host => macros.Context","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/1d2ece5209d7159d00c44397db549a0ad3fc10ff"},{"sha":"141cab1767a1654b753704f583226f4f50f93ad2","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"no idea why we needed that directory","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/141cab1767a1654b753704f583226f4f50f93ad2"},{"sha":"e5b706fdc815725c2d0f21f24539416fdace90d7","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"reorganizes APIs\n\nStreamlines APIs into 5 categories:\n1) import scala.meta._ => always necessary\n2) import scala.meta.syntactic._ => quasiquotes, parsing\n3) import scala.meta.semantic._ => attributes, types, members, scopes, bindings, context\n4) import scala.meta.macros._ => reporting, resources, context\n5) import scala.meta.ui._ => prettyprinting\n\nIn the future, we might have the following additions:\n* Dedicated context for syntactic (to support Tree.tokens)\n* Dedicated quasiquotes for semantic (because syntactic quasiquotes\n  are most likely not going to work well with persisted trees)\n\nAlso shuffles around and renames quite a number of classes, especially\nthose that are involved in tokenization.","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/e5b706fdc815725c2d0f21f24539416fdace90d7"},{"sha":"96bb4ecd022aeb351540d83dc3405939e32eb461","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"simplifies Member hierarchy\n\nThis is something that was inspired by a chat with Paul Phillips.\nThank you, Paul, for this great idea!\n\nJust like we collapsed Scope.XXX and Stat.YYY into just Scope and Stat,\nwe can collapse all Member.ZZZ traits into just Member, Member.Term and Member.Type\nand turn all Members into Scopes. Btw, I just remembered that the same\nhappened to Mods.XYZ.\n\nNow we can ask strange things like q\"Int\".defn.packages, but we will get\nperfectly legitimate answers to them (i.e. an empty collection). My only\nconcern is singular return type methods like `Scope.ctor` or `Member.companion`,\nbut I feel that the significant simplification of the API is worth it.","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/96bb4ecd022aeb351540d83dc3405939e32eb461"},{"sha":"d05c07abf00f7fc9f2f0ebf9f6aef944e0336ebb","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"gets rid of custom exceptions in tokenizer and parser error reporting","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/d05c07abf00f7fc9f2f0ebf9f6aef944e0336ebb"},{"sha":"599be829c6a23823106731692e4fbb1675235e44","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"I think we can live with that","distinct":false,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/599be829c6a23823106731692e4fbb1675235e44"},{"sha":"5dd0634064162c2a5488f9a5282d44b58ceadabe","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge branch 'master' of github.com:xeno-by/scalameta into topic/reorganization","distinct":true,"url":"https://api.github.com/repos/xeno-by/scalameta/commits/5dd0634064162c2a5488f9a5282d44b58ceadabe"}]}