別の質問からのコメントに応えて、このコードを Scala に入れてみました。
trait Foo
new Foo { self =>
val self.x = 3
}
もちろん、それはコンパイルされませんが、エラーは私を困惑させています:
recursive value x$1 needs type
val self.x = 3
^
このコードはどのようにしてパーサーを通過したのでしょうか?
これ-Xprint:parse
も奇妙です。
<synthetic> private[this] val x$1 = 3: @scala.unchecked match {
case self.x => ()
}
それはmatch
の型注釈にあり3
ますか? 編集:明らかにそうではありません。それが注釈の構文です。