Вот упрощение того, с чем я столкнулся. Это компилируется:
trait A { implicit val x = 1 }
trait B extends A { val y = implicitly[Int] }
В то время как это не (не удалось найти неявное значение):
trait B extends A { val y = implicitly[Int] }
trait A { implicit val x = 1 }
Я попытался прояснить свои намерения, указав собственный тип: trait A { this: B => ... }
, но безрезультатно.
Как справиться с такими зависимостями, не беспокоясь о том, как устроен мой код?