在斯卡拉2.10.0-M4爲什麼Scala 2.10在匹配singleton類型時給出'匹配可能不完全'的警告?
object X
def f(e: Either[Int, X.type]) = e match {
case Left(i) => i
case Right(X) => 0
}
給出:
warning: match may not be exhaustive.
It would fail on the following input: Right(<not X>)
這是正確的嗎?當然這場比賽實際上是詳盡無遺的。
(與此同時,在斯卡拉2.9.X我們得到
error: pattern type is incompatible with expected type;
found : object X
required: X.type
case Right(X) => 0
這大概是一個錯誤。)
這似乎喜歡的類型檢查不在這種情況下區分單類型從普通的類型。 反正我猜你應該知道Right(_)上的匹配也是安全的,因爲Right只能是X.type類型,對吧? – Kaito
是的,這是我的'解決方法'。 –
打開一個bug報告它可能不是一個bug,但是儘管如此,窮舉檢查是Scala 2.10上的最新代碼,這只是我想像的Adriaan所期望的反饋。 –