Справочник по Ada 2012
13.12.1 Явно заданные ограничения и профили языка
Статическая семантика
Следующие ограничение_идентификаторы определены языком (дополнительные ограничения определены в Приложениях по Специальным потребностям):
No_Implementation_Aspect_Specifications
Нет аспектов, определяемых реализацией, заданных с помощью спецификации_аспекта. Это ограничение применяется только к текущей компиляции или среде, а не ко всему разделу.
No_Implementation_Attributes
Нет атрибутов, определяемых реализацией. Это ограничение применяется только к текущей компиляции или среде, а не ко всему разделу.
No_Implementation_Identifiers
Нет имен использования, обозначающих объявления с идентификаторами, определяемыми реализацией, которые встречаются в пакетах, определённых языком, или экземплярах обобщённых пакетов, определённых языком. Такие идентификаторы могут возникать следующим образом:
Следующие пакеты и обобщённые пакеты, определённые языком, допускают использование идентификаторов, определяемых реализацией:
пакет System (см. 13.7);
пакет Standard (см. A.1);
пакет Ada.Command_Line (см. A.15);
пакет Interfaces.C (см. B.3);
пакет Interfaces.C.Strings (см. B.3.1);
пакет Interfaces.C.Pointers (см. B.3.2);
пакет Interfaces.COBOL (см. B.4);
пакет Interfaces.Fortran (см. B.5);
Следующие пакеты, определённые языком, содержат только идентификаторы, определяемые реализацией:
пакет System.Machine_Code (см. 13.8);
пакет Ada.Directories.Information (см. A.16);
вложенные пакеты реализации контейнеров очереди (см. A.18.28-31);
пакет Interfaces (см. B.2);
пакет Ada.Interrupts.Names (см. C.3.2).
Для пакета Standard, Standard.Long_Integer и Standard.Long_Float считаются идентификаторами, определяемыми языком, но идентификаторы, такие как Standard.Short_Short_Integer, считаются идентификаторами, определяемыми реализацией.
Это ограничение применяется только к текущей компиляции или среде, а не ко всему разделу.
No_Implementation_Pragmas
Нет директив, определяемых реализацией, или аргументов директив. Это ограничение применяется только к текущей компиляции или среде, а не ко всему разделу.
No_Implementation_Units
В пункте_контекста нет упоминания о каких-либо потомках, определяемых реализацией, пакетов Ada, Interfaces или System. Это ограничение применяется только к текущей компиляции или среде, а не ко всему разделу.
No_Obsolescent_Features
Не используются языковые возможности, определённые в Приложении J. Реализация может определить, обнаруживаются ли с помощью этого ограничения использования переименований из J.1 и директив из J.15. Это ограничение применяется только к текущей компиляции или среде, а не ко всему разделу.
Следующие ограничение_параметр_идентификаторы определены языком:
No_Dependence
Указывает на единицу библиотеки, от которой нет семантических зависимостей.
No_Specification_of_Aspect
Указывает на аспект, для которого не задана спецификация_аспекта, определение_атрибута или директива.
No_Use_Of_Attribute
No_Use_Of_Pragma
Указывает на директиву, которая не должна использоваться.
Правила легальности
Аргумент ограничение_параметр_ограничения No_Dependence должен быть именем; это имя должно иметь форму полного расширенного имени единицы библиотеки, но не обязательно должно обозначать единицу, присутствующую в среде.
Аргумент ограничение_параметр_ограничения No_Specification_of_Aspect должен быть идентификатором; это идентификатор, специфичный для директивы (см. 2.8), и не обозначает ни одного объявления.
Аргумент ограничение_параметр_ограничения No_Use_Of_Attribute должен быть идентификатором или одним из зарезервированных слов Access, Delta, Digits, Mod или Range; это идентификатор, специфичный для директивы.
Аргумент ограничение_параметр_ограничения No_Use_Of_Pragma должен быть идентификатором или зарезервированным словом Interface; это идентификатор, специфичный для директивы.
Правила после компиляции
Ни одна единица компиляции, включённая в раздел, не должна семантически зависеть от единицы библиотеки, идентифицированной именем ограничения No_Dependence.
Статическая семантика
Следующий профиль_идентификатор определён языком:
No_Implementation_Extensions
Для профиля использования No_Implementation_Extensions не должно быть никаких профиль_директива_аргумент_ассоциация.
Профили использования No_Implementation_Extensions эквивалентны следующим ограничениям:
No_Implementation_Aspect_Specifications,
No_Implementation_Attributes,
No_Implementation_Identifiers,
No_Implementation_Pragmas,
No_Implementation_Units.
No_Implementation_Attributes,
No_Implementation_Identifiers,
No_Implementation_Pragmas,
No_Implementation_Units.