依赖方法类型与默认参数冲突

Ale*_*aev 12 scala path-dependent-type default-arguments dependent-type dependent-method-type

使用scala的依赖方法类型时,我遇到了与默认方法参数的冲突:

abstract class X {
  type Y
  case class YY(y: Y)
}

object XX extends X {
  type Y = String
}

trait SomeTrait {
  def method(x: X)(y: x.YY, default: Int = 3): Unit
}

object SomeObject extends SomeTrait {
  def method(x: X)(y: x.YY, default: Int): Unit = {}

  method(XX)(XX.YY("abc")) // fails to compile
}
Run Code Online (Sandbox Code Playgroud)

消息是:

[error]  found   : me.alexbool.XX.YY
[error]  required: x$1.YY
[error] Error occurred in an application involving default arguments.
[error]     method(XX)(XX.YY("abc")) // fails to compile
Run Code Online (Sandbox Code Playgroud)

如果我从方法定义和实现中删除带有默认值的参数,则示例将成功编译.我究竟做错了什么?这是一个错误吗?

PS我正在使用Scala 2.11.4

Ale*_*aev 7

半小时的谷歌搜索,我有一个答案.是的,这是一个错误.https://issues.scala-lang.org/browse/SI-7371