Dlaczego nie produkują następujące ostrzeżenie, gdy -unchecked
jest włączona:Missing ostrzeżenie niewyczerpującym meczu
object Order {
sealed trait EntryOption
case object EmptyEntry extends EntryOption
trait Entry extends EntryOption
def isEmpty(a: EntryOption): Boolean = a match {
case EmptyEntry => true
// case _: Entry => false
}
}
Wydaje miałem dokładnie same problem before w dniach Scala 2.8.0, bez wystarczająca odpowiedź.
EDIT
@Jed To nie ma sensu dla mnie, że ostrzeżenie jest emitowany tylko przez non-klasy abstrakcyjnej Entry
. Rozważmy następującą sytuację:
trait Order {
sealed trait EntryOption
case object EmptyEntry extends EntryOption
abstract sealed class Entry extends EntryOption
def isEmpty(a: EntryOption): Boolean = a match {
case EmptyEntry => true
// case _: Entry => false
}
}
trait OrderImpl extends Order {
final class EntryImpl extends Entry
}
Jedynym sposobem, aby ostrzeżenia wyświetlane jest mieć betonu klasy Entry
w Order
!
https://issues.scala-lang.org/browse/SI-4691 –