Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

3.11.1 Завершения объявлений

Объявления иногда состоят из двух частей. Объявление, требующее второй части, называется требующим завершения. Вторая часть называется завершением объявления (и объявленного сущности) и представляет собой другое объявление, тело или pragma. Тело является телом, entry_body, null_procedure_declaration или expression_function_declaration, завершающим другое объявление, или переименованием-как-телом (см. 8.5.4).

Правила разрешения имён

Конструкции, которые могут быть завершением, интерпретируются как завершение предыдущего объявления только в том случае, если:
  • Объявление и завершение находятся непосредственно в той же декларативной области;
  • Имя определения или defining_program_unit_name в завершении совпадает с именем в объявлении или, в случае pragma, pragma применяется к объявлению;
  • Если объявление перегружаемо, то завершение либо имеет профиль, соответствующий типу, либо является pragma.

Правила легальности

Неявное объявление не должно иметь завершения. Для любого явного объявления, которое должно иметь завершение, должно быть соответствующее явное завершение, если только объявленная сущность не импортирована (см. B.1).
Для данного объявления разрешено не более одного завершения. Дополнительные требования к завершениям приведены при определении каждого вида завершения.
Тип считается полностью определённым в позиции, которая следует за его полным определением типа (если оно есть) и после того, как все его подкомпоненты типа будут полностью определены. Тип должен быть полностью определён до его заморозки (см. 13.14 и 7.3).
ПРИМЕЧАНИЕ 1 В принципе, завершения разрешены для любого вида явного объявления. Однако для некоторых видов объявлений единственным допустимым завершением является определяемый реализацией pragma, и реализациям не требуется иметь такие pragmas.
ПРИМЕЧАНИЕ 2 Существуют правила, которые предотвращают преждевременное использование объявлений, имеющих соответствующее завершение. Elaboration_Checks из 3.11 предотвращают такие использования во время выполнения для подпрограмм, защищённых операций, задач и обобщённых единиц. Правила заморозки (см. 13.14) предотвращают преждевременное использование других сущностей, таких как закрытые типы и отложенные константы, во время компиляции.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API