2011-11-28 24 views
6

Tại sao không phải là sau tạo ra một cảnh báo, khi được kích hoạt -unchecked:cảnh báo Thiếu của trận đấu không đầy đủ

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

Có vẻ như tôi đã chính xác same problem before trong những ngày của Scala 2.8.0, không có câu trả lời đầy đủ.


EDIT

@Jed Nó không có ý nghĩa đối với tôi rằng cảnh báo được phát ra chỉ cho một lớp học không trừu tượng Entry. Hãy xem xét các tình huống sau đây:

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 
} 

Cách duy nhất để làm cho cảnh báo xuất hiện là để có một lớp bê tông Entry trong Order!

+1

https://issues.scala-lang.org/browse/SI-4691 –

Trả lời

3

Nó phàn nàn trên thân cây:

scala> 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 
    | } 
    | } 
<console>:18: warning: match is not exhaustive! 
missing combination   Entry 

      def isEmpty(a: EntryOption) : Boolean = a match { 
                ^
defined module Order 
+0

Ah lớn, sau đó nó đã được cố định. Bây giờ chỉ cần chờ đợi cho đến khi 'đầu năm 2012';) –

+0

@Sciss Trên thực tế, tôi khá chắc chắn Scala 2.10 sẽ đi kèm với virtpatmatch, mà không bị vấn đề này (hoặc _any_ của nhiều mô hình phù hợp với lỗi) ở tất cả. Cấp, nó có thể sẽ đi kèm với một bộ _new_ vấn đề! :-) –

+0

Hmmm, bây giờ bạn đã cho tôi tò mò - virtpatmatch là gì? (Trong thực tế ngày hôm qua tôi cần phải thêm một '@ unchecked' ở một nơi rõ ràng là dương tính giả) –

2

Mục nhập là đặc điểm, không phải là loại chữ.

Các vấn đề liên quan