Posso ottenere un elenco compilato di tutti gli oggetti del caso che derivano da un genitore sigillato in Scala?

Come è stato discusso molte volte su SO, una partita di Scala ti avviserà se non elencherai in modo esaustivo tutti i tipi derivanti da una class sigillata.

Quello che voglio è un Iterable generato in fase di compilazione degli oggetti case derivanti da un particolare genitore. In alternativa, sarei felice di un modo per far capire al compilatore che non ho tutti i tipi necessari in qualche Iterable. Non voglio un approccio basato sulla riflessione e basato sulla riflessione.

Come esempio del secondo approccio, mi piacerebbe avere il seguente codice di massima genera un errore di compilazione dove indicato.

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) 

Sentiti libero di rispondermi dicendomi che non è ansible. Sembra proprio che dovrebbe essere ansible a un certo livello perché il compilatore deve fare essenzialmente lo stesso lavoro quando determinare una partita non è esaustivo.

Pensandoci in un altro modo, prenderei qualcosa come il metodo Enumeration.values ​​() eccetto che applicato agli oggetti case. Certamente, potrei aggiungere qualcosa di simile al codice sopra con un elenco di valori mantenuto manualmente sull’object compagno del genitore, ma sembra inutilmente sobject a errori quando il compilatore potrebbe farlo per me.

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