Closed
Description
Based on OpenCB failure in armanbilge/schrodinger
- builds logs
Compiler version
Last good release: 3.5.0-RC1-bin-20240429-e2c456f-NIGHTLY
First bad release: 3.5.0-RC1-bin-20240501-e6bc130-NIGHTLY
Bisect points to 0890e7a
Minimized code
trait Monad[F[_]] extends Invariant[F]
trait Invariant[F[_]]
object Invariant:
implicit def catsInstancesForList: Monad[List] = ???
implicit def catsInstancesForVector: Monad[Vector] = ???
trait Shrink[T]
object Shrink extends ShrinkLowPriorityImplicits:
trait Buildable[T,C]
implicit def shrinkContainer[C[_],T](implicit v: C[T] => Traversable[T], s: Shrink[T], b: Buildable[T,C[T]]): Shrink[C[T]] = ???
trait ShrinkLowPriorityImplicits:
implicit def shrinkAny[T]: Shrink[T] = ???
trait Distribution[F[_], -P, X] extends (P => F[X])
type GenBeta[A, B, X] = [F[_]] =>> Distribution[F, Beta.Params[A, B], X]
type Beta[R] = [F[_]] =>> GenBeta[R, R, R][F]
object Beta:
trait Params[+A, +B]
trait BetaInstances:
given schrodingerRandomBetaForDouble[F[_]: Monad]: Beta[Double][F] = ???
object all extends BetaInstances
@main def Test =
import all.given
summon[Shrink[Beta.Params[Double, Double]]]
Output
[error] No best given instance of type Shrink[Beta.Params[Double, Double]] was found for parameter x of method summon in object Predef.
[error] I found:
[error]
[error] Shrink.shrinkContainer[[B] =>> Beta.Params[Double, B], Double](
[error] all.schrodingerRandomBetaForDouble[F](
[error] /* ambiguous: both method catsInstancesForList in object Invariant and method catsInstancesForVector in object Invariant match type Monad[F] */
[error] summon[Monad[F]]
[error] ),
[error] Shrink.shrinkAny[Double],
[error] /* missing */summon[Shrink.Buildable[Double, Beta.Params[Double, Double]]])
[error]
[error] But both method catsInstancesForList in object Invariant and method catsInstancesForVector in object Invariant match type Monad[F].
[error] summon[Shrink[Beta.Params[Double, Double]]]
[error] ^
Error compiling project (Scala 3.5.0-RC1-bin-20240502-05354ba-NIGHTLY, JVM (17))
Expectation
Should compile