Справочник по Ada 2012
3.11 Разделы объявлений
Раздел declarative_part содержит declarative_item (возможно, ни одного).
Синтаксис
Статические семантики
Динамические семантики
Выполнение declarative_part состоит из выполнения declarative_item, если таковые есть, в порядке их следования в declarative_part.
Выполняемый элемент находится в выполненном состоянии после нормального завершения его выполнения. До этого момента он находится в состоянии ещё не выполнен.
Для элемента, который пытается использовать тело, выполняется проверка (Elaboration_Check) следующим образом:
- Для вызова (незащищённой) подпрограммы с явным телом, выполняется проверка, что тело уже выполнено. Эта проверка и вычисления фактических параметров вызова выполняются в произвольном порядке.
- Для вызова защищённой операции защищённого типа (с телом — проверка не выполняется, если защищённый тип импортирован — см. B.1), выполняется проверка, что protected_body уже выполнен. Эта проверка и вычисления фактических параметров вызова выполняются в произвольном порядке.
- Для активации задачи, активизатор выполняет проверку, что task_body уже выполнен. Если две или более задачи активируются одновременно (см. 9.2), как результат выполнения declarative_part или инициализации объекта, созданного посредством аллокатора, эта проверка выполняется для всех задач перед активацией любой из них.
- Для инстанцирования обобщённого элемента, имеющего тело, выполняется проверка, что это тело уже выполнено. Эта проверка и вычисление любых explicit_generic_actual_parameter инстанцирования выполняются в произвольном порядке.
Исключение Program_Error генерируется, если любая из этих проверок завершится неудачно.