Невозможно переопределить тип с энергонезависимой верхней границей


У меня ошибка компилятора в Scala, и я не знаю, к чему это относится:
Предположим, эти объявления:

trait Abstract {
  type MyType
}
trait AInner
trait A extends Abstract{
  type MyType <: AInner
}
trait BInner {
  def bMethod : Int
}
trait B extends Abstract with A{
  override type MyType <: BInner with A#MyType
}
Чего я пытаюсь добиться здесь (в чертеB) является дальнейшее ограничение типаMyType объявлено вAbstract, так что любое значение типаMyType должен продлить всеMyTypeс миксиновым деревом.

Компилятор дает мне это сообщение (как в заголовке):тип MyType является энергозависимым типом; не может переопределить тип с энергонезависимой верхней границей, Я это понимаютип волатильности происходит здесь из-за конъюнкции типаwith A#MyTypeЧасть ошибки:тип с энергонезависимой верхней границей вероятно относится к объявлению типаtype MyType <: AInner, гдеAInner не является абстрактным типом, таким образом, энергонезависимым.

Почему я не могу это сделать? Есть ли способ, как достичь своей цели?

Ответы на вопрос(3)

Ваш ответ на вопрос