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

Why does space in backtick constructor params break the compiler?

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

宣言

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

是的,这是一个已知错误:SI-8831 - Case classes exhibit bizarre, order-dependent behavior when members are backquoted