Зависимите типове методи са в конфликт с аргументите по подразбиране

Когато играех със зависимите типове методи на 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
}

Съобщението е:

[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

Ако премахна аргумента със стойност по подразбиране от дефиницията и изпълнението на метода, примерът се компилира успешно. какво правя грешно Това бъг ли е?

P.S. Използвам Scala 2.11.4


person Alexander Bulaev    schedule 03.01.2015    source източник
comment
Прилича ми на бъг.   -  person Travis Brown    schedule 03.01.2015


Отговори (1)


Половин час гугъл и имам отговор. Да, това е грешка. https://issues.scala-lang.org/browse/SI-7371

person Alexander Bulaev    schedule 03.01.2015