0

我正在尝试了解来自 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是最后一课,并且ugenGraphsprivate val. 我所做的是删除以下内容:

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

我知道private不是private[this],所以理论上删除可能会导致不兼容。好的。

我尝试将这个价值保留在那里。错误仍然没有消失。我的理论是编译器可能会删除该方法,因为它从未被调用过?我尝试创建对该值的虚拟访问,例如

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

错误仍然没有消失。我还更改了我的快照版本,以确保它不是 MiMa 的缓存问题。那么为什么它坚持缺少那种合成方法呢?

是原始代码。

假设: MiMa 抱怨的方法是由于getOrElse从 whereugenGraphs访问的闭包参数而生成的。如果是这样,考虑新版本的二进制兼容是否仍然安全?

4

1 回答 1

0

添加重命名为的原始getSynthDef方法geSynthDefOLD使MiMa再次高兴,因此确实必须生成合成方法作为body to 的结果getSynthDef

于 2014-11-02T22:36:57.743 回答