{"push_id":745299975,"size":33,"distinct_size":33,"ref":"refs/heads/new_tests","head":"ac59ccc76476a0a7a9291215845143ab01f38511","before":"cfc7ae0ffec81112a1dcc06a09b1f1d8b5951e22","commits":[{"sha":"e284ab8bb251e1d6745e4968cc7cfd6d6432835a","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge pull request #197 from Dveim/master\n\nFixes for this/super, infix application and ascribing","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/e284ab8bb251e1d6745e4968cc7cfd6d6432835a"},{"sha":"91c99aa1b1210643ebb5796954fcefe4caf0a22a","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"changes codegen for internal fields of meta trees\n\ndenot, typing and expansion have been promoted to have the same status\nas tokens, i.e. they have become core `internalXXX` parameters and are now\nretained upon `internalCopy`.\n\nTokens, denot, typing and expansion can now longer be modified by `copy`.\nInstead, we now have withTokens, withDenot, withTyping and withExpansion,\nwhere the first one has made it into the public API and the others are\nonly available in internal (which is reasonable, because the data structures\nthat they are using are internal).","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/91c99aa1b1210643ebb5796954fcefe4caf0a22a"},{"sha":"9da43674fe069cdd5d97054e36b646911282543c","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge pull request #198 from xeno-by/topic/newconverter\n\nchanges codegen for internal fields of meta trees","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/9da43674fe069cdd5d97054e36b646911282543c"},{"sha":"fc7e618a4160f2cb34f01a0a59965be5dd6fbcb5","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"temporarily patches a breakage in master\n\nLooks like I forgot to pull before submitting a pull request and, as a result,\nthings broke down. We'll need to work on this error message, because\nit's both imprecise (wrong type in \"found\") and badly positioned (the caret is misplaced).","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/fc7e618a4160f2cb34f01a0a59965be5dd6fbcb5"},{"sha":"ae76d91b0730a87e026bf7650d2e655f575a0067","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"implements @delayed parameters for @leaf classes\n\nI wish we had lazy class parameters, and I didn't have to reinvent the wheel\nand, in the meanwhile, reimplement case class codegen in the @leaf annotation\njust to achieve this effect.","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/ae76d91b0730a87e026bf7650d2e655f575a0067"},{"sha":"0b1d467975b2ddbb113de810319a8925ec5b26a1","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge pull request #204 from xeno-by/master\n\nimplements @delayed parameters for @leaf classes","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/0b1d467975b2ddbb113de810319a8925ec5b26a1"},{"sha":"d05047685bfe0d4d1eb21daf8a79aff14b971da7","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"changes unfortunate names in Typing and Expansion\n\nTyping.Unknown was meant to denote a not-yet-filled-in typing, not a typing\nthat's unknown due to some reason. A typing might be known, but not yet\nfilled in.\n\nTyping.Known only made sense when there was Typing.Unknown. Once the latter was gone,\nI had to change the former as well.\n\nExpansion.Identity was meant to denot a not-yet-filled-in expansion,\nnot an expansion that's known to be an identity.","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/d05047685bfe0d4d1eb21daf8a79aff14b971da7"},{"sha":"ee5044a8fb8cffacf6ec680aaae6da7149d34479","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge pull request #205 from xeno-by/master\n\nchanges unfortunate names in Typing and Expansion","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/ee5044a8fb8cffacf6ec680aaae6da7149d34479"},{"sha":"c7fca074d27b2c460cb95c62bbd29f632ebb55c0","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"fixes an accidental deattribution in Type.ctorRef","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/c7fca074d27b2c460cb95c62bbd29f632ebb55c0"},{"sha":"908077d080680559959c27af0d367908d323b9f8","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge pull request #206 from xeno-by/master\n\nfixes an accidental deattribution in Type.ctorRef","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/908077d080680559959c27af0d367908d323b9f8"},{"sha":"e2317e8655ead8a2a391355ed91bccf98eadb2c7","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"introduces type lambdas\n\nWhen working on the new incarnation of the scala.reflect => scala.meta converter,\nI had to solve a problem that's been glossed over in the previous implementation:\nthe problem of assigning types to terms.\n\nPreviously, we had a great cop-out approach that consisted in attaching\nnative reflection artifacts to scala.meta trees. For instance, if we converted\na scala.reflect term, then we would created a scala.meta term with the original\nterm attached. Then, if someone asked us about the type of the converted term,\nwe'd go into the attachment, fetch its scala.reflect type, convert it to scala.meta\nand be done with it.\n\nDespite being very simple, this approach was also remarkable for being\nan evolutionary dead-end, because storing platform-dependent information\nin platform-independent trees isn't going to scale. What if we need to serialize\nthis information? What if we need to mix trees from different platforms?\nAnd so on, and so forth.\n\nSo, a new approach that I put together in the day before my ScalaDays Amsterdam talk\nconsisted in adding a dedicated `typing` field to all ast nodes that inherit\nfrom Term. This field would be essentially Option[Type], either being empty\nor carrying a scala.meta (i.e. platform-independent) Type.\n\nNow, instead of converting the types lazily, when they are requested,\nI had to convert the types eagerly, when the corresponding trees are converted.\nAnd that brought up a really old problem discovered by @mutcianm:\nwhat type should we assign to method references, e.g. as in:\n\ndef foo[T](x: T) = x\nfoo[Int](42)\n\nThe old idea was to throw an exception if someone calls `.tpe` on `foo[Int]`\nor `foo`, because those are not value types and hence can't be represented\nin Scala syntax and hence shouldn't be supported by scala.meta.\n\nThis was more or less fine in the old vision of scala.meta, where it was\nan unopinionated metaprogramming framework. However, in the new scheme of things\nwhere scala.meta is optimized towards analysis of fully typechecked code\n(loaded from TASTY), i.e. where all the term nodes already have their types\nassigned successfully (that is, where .tpe can't fail because a tree node\nis untyped or refers to an unresolved overloaded method), I think it makes\nsense to try to assign types to all terms.\n\nTo do that, we need to think what to do with `foo[Int]` and `foo` in the example\nabove (something that corresponds to MethodType and PolyType in scalac;\nthere are other non-value types in scalac, e.g. ClassInfoType or OverloadedType,\nbut they are not relevant in our setting).\n\nAfter some deliberation, I decided to go ahead and approximate MethodTypes\nas corresponding function types and create a dedicated AST node for PolyTypes.\nEven though there's no surface syntax for polytypes in scalac, there's\nalways kind-projector, and it seems that they are planning to add type lambdas\nto Dotty. In any case, if necessary, we can restrict polytypes to just quasiquotes\nand have the prettyprinter emit equivalent structural projects.\n\nLet's see where this is going to lead us.","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/e2317e8655ead8a2a391355ed91bccf98eadb2c7"},{"sha":"7f53a22d0472cd1174621d00657cf80a9c319781","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"removes Type.tpe\n\nNo idea why we allowed this.","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/7f53a22d0472cd1174621d00657cf80a9c319781"},{"sha":"264fcc6d62f6916eef69d8e71b7d99b8fa5f8b09","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"calling .tpe on method-like members now returns method types\n\nSee e2317e8655 for a motivation behind this.","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/264fcc6d62f6916eef69d8e71b7d99b8fa5f8b09"},{"sha":"b325f051c5faa4b704d5a3995a1284ec6591a5a5","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"Merge pull request #207 from xeno-by/master\n\ntype lambdas and several minor changes","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/b325f051c5faa4b704d5a3995a1284ec6591a5a5"},{"sha":"7eb637a0072bb8f8d65374682c6defa3a2dae79f","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"calling .tpe on ctors now also returns method types","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/7eb637a0072bb8f8d65374682c6defa3a2dae79f"},{"sha":"36d26613c4aa26f0db461c74b95439f430ac177f","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"ctorRef no longer loses types","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/36d26613c4aa26f0db461c74b95439f430ac177f"},{"sha":"c19f3b599e9eaf293f2531ecff2645f174e81b71","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"gives monadic operations to semantic data structures","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/c19f3b599e9eaf293f2531ecff2645f174e81b71"},{"sha":"42ded01bd3221048b57197a1086c212ffb8d9d1f","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"tries a different design for monadic operations\n\nIt turns out that `def map[T: TypeClass](fn: T => T) = ???` isn't going\nto work with parameter type inference. Even if there is a single instance\nof TypeClass[T] in scope, calls like `map(x => x)` are going to fail to compile\nwith an error message suggesting to specify the parameter type of the lambda\nexplicitly.","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/42ded01bd3221048b57197a1086c212ffb8d9d1f"},{"sha":"b53f41eb9be53f09d3dc086e9cf8627444ecaf0d","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"another attempt\n\nPrevious attempt to calculate ContentType via knownDirectSubclasses failed,\nbecause apparently completers for map/flatMap in root traits are fired before\nthe compiler registers sealed subclasses of the said traits.\n\nNow I'm going to do something really stupid, but what choice do we have?","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/b53f41eb9be53f09d3dc086e9cf8627444ecaf0d"},{"sha":"f47fac0321df9fbd224b5b45f368f710b50f8b6e","author":{"email":"9425c2a21b664cae6604ffe3caa6afaedb7b3cf2@gmail.com","name":"Eugene Burmako"},"message":"better error messages for type mismatches when unquoting","distinct":true,"url":"https://api.github.com/repos/Dveim/scalameta/commits/f47fac0321df9fbd224b5b45f368f710b50f8b6e"}]}