Description
I don't have a nice minimization for this one yet, but it appears that type lambdas change the meaning of the type in subtle ways. Consider this commit: typelevel/cats-effect@ef891ca Note the use of G[*]
in place of G
throughout many of the functions in Resource
, such as allocated
. This is a workaround for a bug in Scala 2 (described here: typelevel/cats-effect#807). Unfortunately, it also seems to break Dotty entirely.
With the G[*]
construction in place, Dotty refuses to compile this commit, with most of the errors taking the form of trying to find an Applicative
for something like [A] ==>> IO[A]
. Swapping out G[*]
for G
fixes the issue, though it sets us back in terms of Scala 2 support, since we need to find a different workaround for the aforementioned bug.