simulacrum-scalafix
simulacrum-scalafix copied to clipboard
Does not support higher-kinded type parameters
This means we can't use simulacrum-scalafix to prepare cats-tagless for dotty support 😢
Example
@typeclass
trait FunctorK[A[_[_]]] extends InvariantK[A] {
def mapK[F[_], G[_]](af: A[F])(fk: F ~> G): A[G]
override def imapK[F[_], G[_]](af: A[F])(fk: F ~> G)(gK: G ~> F): A[G] = mapK(af)(fk)
}
Error
error] Caused by: scala.MatchError: _[_] (of class scala.meta.Type$Param$TypeParamImpl)
[error] Caused by: scala.MatchError: _[_] (of class scala.meta.Type$Param$TypeParamImpl)
[error] at org.typelevel.simulacrum.fix.TypeClass$.$anonfun$find$3(TypeClass.scala:75)
[error] at org.typelevel.simulacrum.fix.TypeClass$.$anonfun$find$3(TypeClass.scala:75)
[error] at org.typelevel.simulacrum.fix.package$ResultTraverseOps.$anonfun$traverse$1(package.scala:17)
[error] at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
[error] at org.typelevel.simulacrum.fix.package$ResultTraverseOps.$anonfun$traverse$1(package.scala:17)
[error] at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
[error] at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
[error] at scala.collection.immutable.List.foldLeft(List.scala:91)
[error] at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
[error] at org.typelevel.simulacrum.fix.package$ResultTraverseOps.traverse(package.scala:11)
[error] at scala.collection.immutable.List.foldLeft(List.scala:91)
[error] at org.typelevel.simulacrum.fix.TypeClass$.$anonfun$find$2(TypeClass.scala:75)
[error] at org.typelevel.simulacrum.fix.package$ResultTraverseOps.traverse(package.scala:11)
[error] at scala.util.Either.flatMap(Either.scala:341)
[error] at org.typelevel.simulacrum.fix.TypeClass$.$anonfun$find$2(TypeClass.scala:75)
[error] at org.typelevel.simulacrum.fix.TypeClass$.$anonfun$find$1(TypeClass.scala:67)
[error] at scala.util.Either.flatMap(Either.scala:341)
[error] at scala.collection.immutable.List.flatMap(List.scala:366)
[error] at org.typelevel.simulacrum.fix.TypeClass$.$anonfun$find$1(TypeClass.scala:67)
[error] at org.typelevel.simulacrum.fix.TypeClass$.find(TypeClass.scala:64)
[error] at scala.collection.immutable.List.flatMap(List.scala:366)
[error] at org.typelevel.simulacrum.fix.TypeClass$.toPatch(TypeClass.scala:55)
[error] at org.typelevel.simulacrum.fix.TypeClass$.find(TypeClass.scala:64)
[error] at org.typelevel.simulacrum.fix.TypeClassSupport.fix(TypeClassSupport.scala:320)
[error] at org.typelevel.simulacrum.fix.TypeClass$.toPatch(TypeClass.scala:55)
[error] at scalafix.internal.v1.Rules.$anonfun$syntacticPatch$3(Rules.scala:91)
[error] at org.typelevel.simulacrum.fix.TypeClassSupport.fix(TypeClassSupport.scala:320)
[error] at scala.collection.immutable.List.map(List.scala:293)
[error] at scalafix.internal.v1.Rules.$anonfun$syntacticPatch$3(Rules.scala:91)
[error] at scalafix.internal.v1.Rules.syntacticPatch(Rules.scala:90)
[error] at scala.collection.immutable.List.map(List.scala:293)
[error] at scalafix.internal.v1.MainOps$.getPatchesAndDiags(MainOps.scala:348)
[error] at scalafix.internal.v1.Rules.syntacticPatch(Rules.scala:90)
[error] at scalafix.internal.v1.MainOps$.unsafeHandleFile(MainOps.scala:285)
[error] at scalafix.internal.v1.MainOps$.getPatchesAndDiags(MainOps.scala:348)
[error] at scalafix.internal.v1.MainOps$.unsafeHandleFile(MainOps.scala:285)