Я установил флаг компилятора -Xfatal-warnings
в моей сборке SBT и уверен, что этот код не компилируется:
package example
sealed trait Errors
object Errors {
case class BadFirstName(name: String) extends Errors
case class BadLastName(name: String) extends Errors
}
...
def handleError(errors: Errors): String = errors match {
case BadFirstName(name) => s"$name is bad"
}
Я вижу ошибку [error] It would fail on the following input: BadLastName(_)
Но если ядобавьте охрану к BadFirstName
совпадению, которое он компилирует без ошибок или предупреждений:
def handleError(errors: Errors): String = errors match {
case BadFirstName(name) if name.startsWith("t") => s"$name is bad"
}
...
[info] Done compiling.
А затем взрывается во время выполнения с ужасным [error] scala.MatchError: BadLastName(...)
Это похоже на ошибку для меняно я хотел проверить, что я что-то пропустил?