Менеджер миграции / бинарная совместимость: переопределение хеш-кода со ссылкой на приватный [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 не жалуется.

Другие вопросы по тегам