考虑以下破碎的功能:
def sum (list : Seq[Int]) : Int = list match {
case Nil => 0
case head :: tail => head + sum(tail)
}
这里,该函数应该与List[Int]
一起使用,但是被重构为接受Seq[Int]
,因此在没有编译器注意的情况下被破坏。
Scala不完整模式匹配检测中的这个漏洞使得它几乎无用。
我想有办法系统地发现这些问题。具体来说,我希望编译器在每个instanceof
引导模式匹配时发出错误/警告,即我只想在密封层次结构和自定义匹配器上允许模式匹配。
是否存在用于对模式匹配安全性进行保守(而非任意)检查的现有编译器选项/插件?