Как я могу вызвать несколько вызовов 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 ?); но есть ли способ вызвать несколько финализаций без этого изменения тестируемого программного обеспечения?

5
задан Simon Wright 19 January 2011 в 21:19
поделиться