Невозможно переопределить тип с энергонезависимой верхней границей
У меня ошибка компилятора в 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
не является абстрактным типом, таким образом, энергонезависимым.