Perché non produce un avvertimento seguente, quando -unchecked
è abilitato:mancante avvertimento del match non esaustivo
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
}
}
sembra Ho avuto esattamente lo same problem before nei giorni di Scala 2.8.0, senza risposta sufficiente
EDIT
@Jed Non ha senso per me che l'avvertimento viene emesso solo per una classe non astratta Entry
. Si consideri la seguente situazione:
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
}
L'unico modo per fare l'avvertimento appare è quello di avere una classe concreta Entry
in Order
!
https://issues.scala-lang.org/browse/SI-4691 –