私たちのコードを Scala 2.9 に移行したところ、動作せず、黙って失敗したコードの大部分が見つかりました。Proxy を拡張するケース クラスが等しくないことを突き止めました。私たちのコードでは、Proxy を直接拡張するのではなく、Proxy を拡張するライブラリ内のクラスを拡張するだけです。
どんな助けでも大歓迎です。
2.8で
scala> case class Test(a:String) extends Proxy {
| def self = a
| }
defined class Test
scala>
scala> val label = new Test("bla")
label: Test = bla
scala> println(label == label) // this is TRUE
true
scala> println(label == "bla")
true
2.9で
scala> case class Test(a:String) extends Proxy {
| def self = a
| }
defined class Test
scala>
scala> val label = new Test("bla")
label: Test = bla
scala> println(label == label) // this is now FALSE
false
scala> println(label == "bla")
true
アップデート
これは Scala 2.9 のバグに過ぎないと思います。それ以外の場合、他のクラスを拡張するケース クラスがある場合は、その基本クラスの階層を調査して、プロキシを拡張していないことを確認する必要があります。コードでこれを行うことはできません。より明白なバグを修正するだけです。これが意図された動作である場合、コンパイラの警告は必須です。それは正しいと思いますか?
アップデート
また、 scala メーリング リストでも議論されています。
アップデート
バグを報告しました