Справочник Ada 2012
C.4 Требования к предварительной разработке
Этот подраздел определяет дополнительные требования к реализации и документации для директивы Preelaborate (см. 10.2.1).
Требования к реализации
Реализация не должна вносить никаких накладных расходов во время выполнения для проверки разработки подпрограмм и protected_bodies, объявленных в предварительно разработанных единицах библиотеки.
Реализация не должна выполнять операции записи в память после загрузки для разработки объектов констант, объявленных непосредственно внутри декларативной области предварительно разработанного пакета библиотеки, при условии, что тип подтипа и начальное выражение (или начальные выражения по умолчанию, если они инициализированы по умолчанию) объявления_объекта удовлетворяют следующим ограничениям. Смысл понятия время загрузки определяется реализацией.
- Любой маркер_подтипа обозначает статически ограниченный подтип со статически ограниченными подкомпонентами, если таковые имеются;
- никакой маркер_подтипа не обозначает управляемый тип, частный тип, частное расширение, обобщенный формальный частный тип, обобщенный формальный производный тип или потомка такого типа;
- любое ограничение является статическим ограничением;
- любой аллокатор предназначен для типа доступа к константе;
- любое использование предопределенных операторов встречается только в статических выражениях;
- любые основные_элементы, которые являются имями, кроме ссылка_на_атрибутов для атрибутов Access или Address, встречаются только в статических выражениях;
- любое имя, которое не является частью статического выражения, является расширенным именем или прямое_имя, которое статически обозначает некоторый объект;
- любой дискретный_выбор массива_агрегата является статическим;
- никакая проверка, определенная языком, связанная с разработкой объявления_объекта, не может завершиться ошибкой.
Требования к документации
Реализация должна документировать все обстоятельства, при которых разработка предварительно разработанного пакета вызывает выполнение кода во время выполнения.
Реализация должна документировать, позволяет ли используемый метод инициализации предварительно разработанных переменных возобновить раздел без перезагрузки.
Рекомендации по реализации
Рекомендуется реализовывать предварительно разработанные пакеты таким образом, чтобы для разработки сущностей, не охваченных Требованиями к реализации, выполнялось мало или совсем не выполнялось кода во время выполнения.