在斯卡拉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所期望的反馈。 –