¿Puedo obtener una lista en tiempo de compilación de todos los objetos de caso que se derivan de un padre sellado en Scala?

Como se ha discutido muchas veces en SO, una coincidencia de Scala le avisará si no enumera exhaustivamente todos los tipos que se derivan de una clase sellada.

Lo que quiero es una Iterable generada en tiempo de compilación de los objetos de caso derivados de un padre particular. Alternativamente, me encantaría poder hacer que el compilador me diga que no tengo todos los tipos necesarios en algún Iterable. No quiero un enfoque basado en la reflexión en tiempo de ejecución.

Como ejemplo del segundo enfoque, me gustaría que el siguiente código en bruto genere un error de compilación donde se indique.

sealed trait Parent
case object A extends Parent
case object B extends Parent
case object C extends Parent

// I want a compiler error here because C is not included in the Seq()
val m = Seq(A, B).map(somethingUseful)

Siéntase libre de responder diciéndome que no es posible. Parece que debería ser posible en algún nivel porque el compilador debe estar haciendo esencialmente el mismo trabajo cuando la determinación de una coincidencia no es exhaustiva.

Pensándolo de otra manera, tomaría algo como el método Enumeration.values ​​() excepto que se aplica a los objetos de casos. Ciertamente, podría agregar algo similar al código anterior con una lista de valores mantenida manualmente al objeto compañero del padre, pero eso parece innecesariamente propenso a errores cuando el compilador podría hacer eso por mí.

// Manually maintained list of values
object Parent { 
    val values = Seq(A, B, C)
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta