Scala MiMa抱怨失去了一种合成方法,尽管我把原来的路线放回原位
我试图理解来自迁移管理器的以下消息:Scala MiMa抱怨失去了一种合成方法,尽管我把原来的路线放回原位,scala,binary-compatibility,migration-manager,Scala,Binary Compatibility,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 hav
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抱怨的方法是由于访问
ugenGraphs
的getOrElse
的闭包参数而产生的。如果是这样的话,<强>它仍然是安全的< /强>考虑新版本二进制兼容吗?< P> >添加原来的<代码> GeStudioFf 方法重命名为<代码> GeSythDeHordy使MIMA再次高兴,所以实际上合成方法必须是由体到<代码> GeStudioFf < /C> >的结果。