`sbt.protocol.LogMessage` should be a sealed trait
Opened this issue · 2 comments
kiritsuku commented
The current definition of LogMessage
is:
object LogMessage {
val DEBUG = "debug"
val INFO = "info"
val WARN = "warn"
val ERROR = "error"
private[protocol] val validLevels = Set(DEBUG, INFO, WARN, ERROR)
}
Instead, it should be implemented by something like:
sealed trait LogMessage
case object Debug extends Message
case object Info extends Message
case object Warn extends Message
case object Error extends Message
This would allow the compiler to provide exhaustive warnings in pattern match expressions.
havocp commented
I think we have to leave this one open until we break ABI next, but it's a good point.
jsuereth commented
not sure it breaks ABI, but it would break source compat.