Справочник по Ada 2005
8.2 Область действия объявлений
Для каждого объявления правила языка определяют определённую часть текста программы, называемую областью действия объявления. Область действия объявления также называется областью действия любого вида или сущности, объявленной этим объявлением. Внутри области действия сущности, и только там, существуют места, где допустимо обращение к объявленной сущности. Эти места определяются правилами видимости и перегрузки.
Статическая семантика
Непосредственная область действия объявления — это часть области объявления, непосредственно окружающая объявление. Непосредственная область действия начинается в начале объявления, за исключением случая перегружаемого объявления, в котором непосредственная область действия начинается сразу после места, где определяется профиль вызываемой сущности (это в конце _спецификации вызываемой сущности или в конце generic_instantiation, если это экземпляр). Непосредственная область действия простирается до конца области объявления, с исключениями:
- Непосредственная область действия library_item включает только его семантические зависимости.
- Непосредственная область действия объявления в частной части библиотечной единицы не включает видимую часть любого публичного потомка этой библиотечной единицы.
Видимая часть (вида) сущности — это часть текста её объявления, содержащая объявления, видимые извне. Частная часть (вида) сущности, имеющей видимую часть, содержит все объявления в объявлении (вида) сущности, кроме тех, которые находятся в видимой части; они не видны извне. Видимые и частные части определены только для таких видов сущностей: вызываемые сущности, другие программные единицы и составные типы.
- Видимая часть вида вызываемой сущности — это её профиль.
- Видимая часть составного типа, отличного от типа задачи или защищённого типа, состоит из объявлений всех компонентов, объявленных (явным или неявным образом) в type_declaration.
- Видимая часть обобщённой единицы включает generic_formal_part. Для обобщённого пакета она также включает первый список basic_declarative_itemов package_specification. Для обобщённой подпрограммы она также включает профиль.
- Видимая часть пакета, единицы задачи или защищённой единицы состоит из объявлений в объявлении программной единицы, кроме тех, которые следуют за ключевым словом private, если таковые имеются; см. 7.1 и 12.7 для пакетов, 9.1 для единиц задач и 9.4 для защищённых единиц.
Область действия объявления всегда содержит непосредственную область действия этого объявления. Кроме того, для данного объявления, которое находится непосредственно в видимой части внешнего объявления или является публичным потомком внешнего объявления, область действия данного объявления простирается до конца области действия внешнего объявления, за исключением того, что область действия library_item включает только его семантические зависимости.
Область действия attribute_definition_clause идентична области действия объявления, которое бы происходило в месте attribute_definition_clause.
Непосредственная область действия объявления также является непосредственной областью действия сущности или вида, объявленной этим объявлением. Аналогично, область действия объявления также является областью действия сущности или вида, объявленной этим объявлением.
ПРИМЕЧАНИЯ
4 Существуют обозначения для обозначения видимых объявлений, которые не являются непосредственно видимыми. Например, parameter_specification находятся в видимой части subprogram_declaration, чтобы они могли быть использованы в вызовах с именованием, которые появляются вне вызываемой подпрограммы. Другой пример: объявления видимой части пакета могут обозначаться расширенными именами, которые появляются вне пакета, и могут быть сделаны непосредственно видимыми с помощью use_clause.