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]ます。したがって、理論的には、削除によって非互換性が生じる可能性があります。Ok。

私はそこにその価値を維持しようとします。エラーはまだ消えません。私の理論は、メソッドが呼び出されないため、コンパイラがメソッドを削除する可能性があるということですか? その値へのダミーアクセスを作成しようとします。

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

それでもエラーは消えません。MiMa のキャッシングの問題ではないことを確認するために、スナップショットのバージョンも変更しました。では、なぜその合成方法の欠落を主張するのでしょうか?

これが元のコードです。

仮説: MiMa が訴えるメソッドは、getOrElsefrom whereへのクロージャ引数ugenGraphsがアクセスされたために生成されたものです。その場合、新しいバージョンはバイナリ互換であると考えても安全ですか?

4

1 に答える 1