Руководство по Ada (Ada 2022)
J.15 Прагмы, связанные с аспектами
Прагмы могут использоваться как альтернатива аспектам_спецификациям для указания определённых аспектов.
Правила разрешения имен
Определенные прагмы определены как прагмы программных единиц. Имя, используемое в качестве аргумента прагмы программной единицы, должно разрешаться для обозначения объявлений или переименований одной или нескольких программных единиц, которые встречаются непосредственно внутри области объявления или компиляции, в которой прагма встречается непосредственно, или оно должно разрешаться для обозначения объявления непосредственно включающей программной единицы (если таковая имеется); прагма применяется к указанной(ым) программной(ым) единице(ам). Если в качестве аргументов не указаны имена, прагма применяется к непосредственно включающей программной единице.
Правила допустимости
Прагма программной единицы должна появляться в одном из этих мест:
- В месте единицы_компиляции, в этом случае прагма должна следовать непосредственно в той же компиляции (за исключением других прагм) за объявлением_единицы_библиотеки, которое является объявлением_подпрограммы, объявлением_генерической_подпрограммы или генерацией_генерика, и прагма должна иметь аргумент, который является именем, обозначающим это объявление.
- Непосредственно внутри видимой части программной единицы и перед любым вложенным объявлением (но не внутри формального части генерика), в этом случае аргумент, если он есть, должен быть прямым_именем, который обозначает объявление непосредственно включающей программной единицы.
- В месте объявления, отличного от первого, части_объявлений или объявления программной единицы, в этом случае прагма должна иметь аргумент, который должен быть прямым_именем, обозначающим одну или несколько из следующих (и ничего более): объявление_подпрограммы, объявление_генерической_подпрограммы или генерация_генерика той же части_объявлений или объявления программной единицы.
Определенные прагмы программной единицы определены как прагмы единиц библиотеки. Если прагма единицы библиотеки применяется к программной единице, программная единица должна быть единицей библиотеки.
Статическая семантика
Прагма единицы библиотеки, которая применяется к генерической единице, не применяется к её экземплярам, если специальное правило для прагмы не указывает обратное.
Рекомендации по реализации
При применении к генерической единице прагма программной единицы, которая не является прагмой единицы библиотеки, должна применяться к каждому экземпляру генерической единицы, для которого нет переопределяющей прагмы, применённой непосредственно к экземпляру.