【问题标题】:Scalac bug or misunderstanding on my part?Scalac错误或我的误解?
【发布时间】:2018-06-08 16:10:55
【问题描述】:

我在我的 SBT 构建中设置了 -Xfatal-warnings 编译器标志,果然这段代码无法编译:

package example

sealed trait Errors

object Errors {
  case class BadFirstName(name: String) extends Errors
  case class BadLastName(name: String) extends Errors
}

...

def handleError(errors: Errors): String = errors match {
  case BadFirstName(name) => s"$name is bad"
}

我看到错误[error] It would fail on the following input: BadLastName(_)

但是,如果我在 BadFirstName 匹配中添加保护,它编译时不会出现错误或警告:

def handleError(errors: Errors): String = errors match {
  case BadFirstName(name) if name.startsWith("t") => s"$name is bad"
}
...
[info] Done compiling.

然后在运行时用可怕的[error] scala.MatchError: BadLastName(...) 炸毁

这对我来说似乎是一个错误,但我想检查一下我是否遗漏了什么?

【问题讨论】:

    标签: scala scalac


    【解决方案1】:

    是的,这是一个错误,即SI-5365。

    【讨论】:

      猜你喜欢
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      相关资源
      最近更新 更多