Менеджер миграции / бинарная совместимость: переопределение хеш-кода со ссылкой на приватный [this]
Почему имеет приоритет hashCode
бинарное несовместимое изменение:
До:
trait Foo extends Product
После:
trait Foo extends Product {
private[this] lazy val _hashCode = ScalaRunTime._hashCode(this)
override def hashCode: Int = _hashCode
}
Миграционный менеджер говорит:
[error] * synthetic method Foo$$_hashCode()Int in trait Foo is present only in current version
[error] filter with: ProblemFilters.exclude[ReversedMissingMethodProblem]("Foo.Foo$$_hashCode")
Это на самом деле проблема? Или я могу остаться на той же минорной версии с этим изменением?
1 ответ
Решение
Не прямой ответ, но это возможно, чтобы избежать private[this] lazy val
в целом:
trait Foo extends Product {
override lazy val hashCode: Int = ScalaRunTime._hashCode(this)
}
Здесь MiMa не жалуется.