No se puede anular un tipo con límite superior no volátil


Tengo un error de compilación en scala y no sé a qué se refiere:
Supongamos estas declaraciones:

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
}
Lo que estoy tratando de lograr aquí (en rasgoB) es para restringir aún más el tipoMyType declarado enAbstract, por lo que cualquier valor de tipoMyType debe extender todo elMyTypes en el árbol mixin.

El compilador me está dando este mensaje (como en el título):tipo MyType es un tipo volátil; no se puede anular un tipo con límite superior no volátil. Entiendo quetipo de volatilidad está sucediendo aquí debido a la conjunción de tiposwith A#MyType, la parte del error:tipo con límite superior no volátil probablemente se refiere a la declaración de tipotype MyType <: AInner, dóndeAInner No es un tipo abstracto por lo tanto no volátil.

¿Por qué no puedo hacerlo? ¿Hay alguna manera, cómo lograr mi objetivo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta