При переносе нашего кода в 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. В противном случае, если у вас есть класс case, который расширяет любой другой класс, вы должны исследовать иерархию этого базового класса, чтобы убедиться, что он никогда не расширяет Proxy. Мы не сможем сделать это в нашем коде, мы просто сможем исправить более очевидные ошибки. Если это предполагаемое поведение, тогда предупреждение компилятора обязательно. Это звучит примерно так?
Обновление
Также обсуждается в списке рассылки scala .
Обновление
Я подал ошибку