Kotlin: Superclass no es accesible desde el rasgo

En Kotlin, dada alguna class:

public open class A { open fun sayHi() = "hi" } 

Y un rasgo T que requiere subclasss para extender A:

 public trait T : A { override fun sayHi() = super.sayHi() + " John" } 

Uno esperaría que T.sayHi pudiera llamar a super.sayHi() o al super.sayHi() más explícito super<A>.sayHi() , ya que toda la información de tipo está allí, pero en su lugar produce Superclass is not accessible from trait .

Pregunta:

[¿Cómo] puedo anular algún método desde dentro del rasgo?

Notas:

Por supuesto, sin anulación solo podría hacer:

 public trait T : A { fun another() = sayHi() + " John" } 

Pero sí quiero que mi rasgo sea capaz de "interceptar / estar en el medio".

Tuve que usar un delegado para lograr un comportamiento similar, pero me gustaría saber si es posible hacerlo con los rasgos.

    Como @Salomon destacó su comentario, esta característica se eliminará en las versiones más nuevas de Kotin, por lo que esta pregunta ya no será válida.

    Clases requeridas

    Algunos de ustedes habrán oído hablar de esta característica: los rasgos en Kotlin pueden "extender" las classs (en realidad usamos el término "requieren").

    Técnicamente, significa que cuando una class extiende dicho rasgo, debe (directa o indirectamente) extender también la class requerida. Esta function tiene muy pocos casos de uso, por lo que estamos desaprobando.

    Fuente: http://blog.jetbrains.com/kotlin/2015/04/upcoming-changes-and-more/