I find myself writing the code like this a lot:
thing match {
case Case1 ...
case Case2 ...
case _ => throw new IllegalStateException(s"unexpected $thing")
}
Sometimes I want a runtime error when the cases don't match. The cases are a form of assertion.
Is there a better way to suppress the exhaustiveness check?
I don't want to use [@unchecked](https://www.scala-lang.org/api/2.12.1/scala/unchecked.html) because that would also disable reachability checking, which I do want.