最近のAdaCoreGemには、次のような声明があります。
Finalizeの実装は少し複雑です。Adaリファレンスマニュアルには、Finalize手順は常にべき等である必要があることが示されています。Adaコンパイラは、特に例外が発生した場合に、同じオブジェクトに対してFinalizeを複数回自由に呼び出すことができます。
私が制御するタイプをテストする必要があります、
type T is private;
private
type T is new Ada.Finalization.Controlled with ...
ソースを変更して、タイプを視覚的に制御できるようにすることができます
type T is new Ada.Finalization.Controlled with private;
そして、ただ電話しますFinalize (My_T);(またはMy_T.Finalize?); しかし、テスト対象のソフトウェアにこの変更を加えることなく、複数のファイナライズを引き起こす方法はありますか?