MiMa жалуется на потерю синтетического метода, хотя я вернул оригинальную линию на место

Я пытаюсь понять следующее сообщение от Migration Manager:

Found 1 binary incompatibilities
================================
 * synthetic method
   de$sciss$lucre$synth$impl$NodeGraphImpl$$ugenGraphs()scala.concurrent.stm.Ref
   in class de.sciss.lucre.synth.impl.NodeGraphImpl does not have a
   correspondent in new version

Класс NodeGraphImpl это последний класс, и ugenGraphs был private val, Что я сделал, так это удалил следующее:

private val ugenGraphs = Ref(Map.empty[GraphEquality, SynthDef])

Я это понимаю private не является private[this] Таким образом, теоретически может возникнуть несовместимость удаления. Хорошо.

Я пытаюсь сохранить это значение там. Ошибка до сих пор не уходит. Моя теория заключается в том, что компилятор может удалить метод, потому что он никогда не вызывается? Я пытаюсь создать фиктивный доступ к этому значению, например,

def foo(): Unit = ugenGraphs.apply()

Тем не менее ошибка не исчезает. Я также изменил версию своего снимка, чтобы убедиться, что это не проблема кеширования MiMa. Так почему же он настаивает на отсутствии этого синтетического метода?

Вот оригинальный код.

Гипотеза: метод, на который жалуется MiMa, был создан из-за аргумента замыкания getOrElse отсюда ugenGraphs Доступ Если это так, все еще безопасно считать новую версию бинарно-совместимой?

1 ответ

Решение

Добавление оригинала getSynthDef метод переименован в geSynthDefOLD делает MiMa счастливым снова, так что синтетический метод должен был быть создан как следствие getSynthDef,

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