为什么反引号构造函数参数中的空格会破坏编译器?

时间:2016-02-10 10:16:24

标签: scala scalac

空格和排序的某种组合以及参数名称中的反引号,其中反引号名称与另一个参数具有相同的前导字符似乎误导编译器产生编译错误:

声明

case class A(`abc def`: List[Int], abc: String)

导致

[info] Compiling 7 Scala sources to ...
[error] (test:compileIncremental) scala.reflect.internal.Types$TypeError: type mismatch;
[error]  found   : List
[error]  required: String
[error] Total time: 2 s, completed Feb 10, 2016 11:09:51 AM

这个问题似乎取决于参数的排序和类型以及声明的类型,因为以下所有编译都很好:

case class A(abc: String, `abc def`: List[Int])
case class B(`abc def`: String, abc: String)
case class C(`bbc def`: List[Int], abc: String)
def x(`abc def`: List[Int], abc: String) = 42

这是一个错误还是以某种方式预期?

Scala 2.11.7

1 个答案:

答案 0 :(得分:2)