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
,