为什么此scala代码报告编译错误:递归值x需要类型

Fre*_*ind 17 scala type-inference

scala代码很简单:

case class X(id: Option[String] = None, username: Option[String])

object X {
  def create(x: X): X = {
    x.copy(id = Some("111"))
  }
}

class Test {

  def test() {
    val x = X.create(X(
      username = Some("Hello, world!")))

    val id = x.id.get  // !!! reports: recursive value x needs type
  }

}
Run Code Online (Sandbox Code Playgroud)

请注意该行:

 val id = x.id.get
Run Code Online (Sandbox Code Playgroud)

为何报道recursive value x needs type

如果我更改变量名称,则:

val dd = x.id.get
Run Code Online (Sandbox Code Playgroud)

一切都会安好的.

PS:scala版本是:2.9.1.final

Mil*_*bin 16

删除idcase类定义中的默认参数X也解决了这个问题,这个问题表明这是SI-5091的一个实例.