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]
ます。したがって、理論的には、削除によって非互換性が生じる可能性があります。Ok。
私はそこにその価値を維持しようとします。エラーはまだ消えません。私の理論は、メソッドが呼び出されないため、コンパイラがメソッドを削除する可能性があるということですか? その値へのダミーアクセスを作成しようとします。
def foo(): Unit = ugenGraphs.apply()
それでもエラーは消えません。MiMa のキャッシングの問題ではないことを確認するために、スナップショットのバージョンも変更しました。では、なぜその合成方法の欠落を主張するのでしょうか?
これが元のコードです。
仮説: MiMa が訴えるメソッドは、getOrElse
from whereへのクロージャ引数ugenGraphs
がアクセスされたために生成されたものです。その場合、新しいバージョンはバイナリ互換であると考えても安全ですか?