Справочник по Ada 2005
10.1.6 Правила видимости на уровне окружения
Обычные правила видимости не применяются внутри parent_unit_name или context_clause, а также внутри pragma, который находится на месте единицы компиляции. Специальные правила видимости для этих контекстов приведены здесь.
Статические семантики
Внутри parent_unit_name в начале явного library_item и внутри nonlimited_with_clause видимы только явные library_item окружения, а непосредственно видимы только явные корневые library_item окружения. Внутри limited_with_clause видимы только неявные объявления ограниченного представления библиотечного пакета окружения, а непосредственно видимы только неявные объявления ограниченного представления корневого библиотечного пакета.
Внутри use_clause или pragma, который находится в context_clause, виден каждый library_item, упомянутый в предыдущем with_clause того же context_clause, а каждый корневой library_item, упомянутый таким образом, виден непосредственно. Кроме того, внутри такого use_clause, если данный объявление виден или непосредственно виден, то каждое объявление, которое находится непосредственно внутри видимой части данного объявления, также видно. Никакие другие объявления не видны или непосредственно видны.
Внутри parent_unit_name подмодуля library_item видны так же, как и в parent_unit_name library_item; кроме того, объявление, соответствующее каждому body_stub в окружении, также видно.
Внутри pragma, который появляется на месте единицы компиляции, видно непосредственно предшествующее library_item и каждый из его предков. Предковый корневой library_item непосредственно виден.
Несмотря на правила 4.1.3, расширенное имя в with_clause, pragma в context_clause или pragma, который появляется на месте единицы компиляции, может состоять из prefix, обозначающего обобщенный пакет, и selector_name, обозначающего дочерний элемент этого обобщенного пакета. (Дочерний элемент обязательно является обобщенной единицей; см. 10.1.1.)