Отсутствующее предупреждение о неисчерпывающем совпадении

Почему следующее не выдает предупреждение, когда -unchecked включен:

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
   }
}

Кажется, у меня была точно такая же проблема раньше, во времена Scala 2.8.0, без достаточного ответа.


EDIT

@Jed Для меня не имеет смысла, что предупреждение выдается только для неабстрактного класса Entry. Рассмотрим следующую ситуацию:

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
}

Единственный способ заставить предупреждение появиться - это иметь конкретный класс Entry в Order!

6
задан 0__ 27 September 2013 в 19:21
поделиться