Справочник Ada 95
C.5 Директива Discard_Names
Директива Discard_Names может использоваться для уменьшения объёма памяти, используемой для имён определённых сущностей.
Синтаксис
Формат директивы Discard_Names следующий:
pragma Discard_Names[([On => ] local_name)];
Директива Discard_Names разрешена только непосредственно внутри declarative_part, непосредственно внутри package_specification или в качестве конфигурационной директивы.
Правила допустимости
local_name (если указано) должно обозначать непроизводный подтип перечисления, подтип помеченного типа или исключение. Директива применяется к типу или исключению. Без local_name директива применяется ко всем таким сущностям, объявленным после директивы в том же области объявления. Кроме того, директива может использоваться как конфигурационная директива. Если директива применяется к типу, то она применяется также ко всем потомкам этого типа.
Статическая семантика
Если задан local_name, то директива Discard_Names является директивой представления.
Если директива применяется к типу перечисления, то семантика атрибутов Wide_Image и Wide_Value для этого типа определяется реализацией; семантика атрибутов Image и Value всё ещё определяется через Wide_Image и Wide_Value. Кроме того, семантика Text_IO.Enumeration_IO определяется реализацией. Если директива применяется к помеченному типу, то семантика функции Tags.Expanded_Name для этого типа определяется реализацией. Если директива применяется к исключению, то семантика функции Exceptions.Exception_Name для этого исключения определяется реализацией.
Рекомендации для реализации
Если директива применяется к сущности, то реализация должна уменьшить объём памяти, используемой для хранения имён, связанных с этой сущностью.