我正在尝试了解来自 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
从 whereugenGraphs
访问的闭包参数而生成的。如果是这样,考虑新版本的二进制兼容是否仍然安全?