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 elMyType
s 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.