如何激活Finalize的多个调用?

在最近的AdaCore Gem中有一个声明 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
?);但有没有什么方法可以导致多次最终确定而不对测试中的软件进行此更改?     
已邀请:
出于测试目的,我使用子包。它允许测试私有部分。 假设您的包裹是:
package A is
   type T is private;
private
   type T is new Ada.Finalization.Controlled with ...
end A;
我会测试类似的东西:
package body A.Test is
   procedure Test_Finalize is
       My_T : T;
   begin
       My_T.Finalize;
   end Test_Finalize;
end A.Test;
    

要回复问题请先登录注册