Вы не можете. Selector_Type
является изменчивым, потому что это интерфейс с операционной системой, и может (будет) меняться без каких-либо действий со стороны кода Ada.
Мой пробный пример был
package Rules is
type Selector is limited private;
private
type Selector is null record with Volatile;
S : Selector;
end Rules;
проверено как
$ gnatcheck --show-rule rules.ads -rules +RVolatile_Objects_Without_Address_Clauses
rules.ads:5:04: volatile object with no address clause [Volatile_Objects_Without_Address_Clauses]
Похоже, вы должны сказать, какие правила вы хотите проверить, почему бы просто не выбрать это?
В качестве альтернативы, если у вас есть контроль над источником , вы можете применить исключение .
В этом случае это будет выглядеть как
package Rules is
type Selector is limited private;
private
type Selector is null record with Volatile;
pragma Annotate (Gnatcheck, Exempt_On,
"Volatile_Objects_Without_Address_Clauses",
"only a demo!");
S : Selector;
pragma Annotate (Gnatcheck, Exempt_Off,
"Volatile_Objects_Without_Address_Clauses");
T : Selector;
end Rules;
и теперь оно проверяется как
$ gnatcheck --show-rule rules.ads -rules +RVolatile_Objects_Without_Address_Clauses
rules.ads:11:04: volatile object with no address clause [Volatile_Objects_Without_Address_Clauses]
(строка 11 - это неисполненное объявление T
; нет претензий к объявлению S
в строке 8).
Примечание:
Извинения за более ранние версии этого ответа , который имел фундаментальное недоразумение. gnatcheck поддерживает правило просто отлично, если вы правильно его прочитали: речь идет о энергозависимых объектах без предложения адреса, не энергозависимых types .