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

7.3.3 Значения по умолчанию для начальных условий

Для частного типа или частного расширения (включая формальный тип параметра обобщения) можно указать следующее определённое языком ограничение аспекта с помощью определения аспекта (см. 13.1.1):
Default_Initial_Condition

Этот аспект должен быть задан выражением, называемым выражением начального условия по умолчанию. Default_Initial_Condition может быть указан для объявления частного типа, объявления частного расширения, определения формального частного типа или определения формального производного типа. Аспект Default_Initial_Condition не наследуется, но его эффекты являются аддитивными, как определено ниже.

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

Ожидаемый тип для выражения начального условия по умолчанию — любой булевский тип.
Внутри выражения начального условия по умолчанию, связанного с объявлением типа T, имя, обозначающее объявление, интерпретируется как текущий экземпляр условного (не абстрактного) формального производного типа NT с предком T, имеющего непосредственно видимые примитивные операции.

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

Аспект Default_Initial_Condition не должен быть указан для типа, частичный вид которого имеет неизвестные дискриминанты, независимо от того, объявлены ли они явно или унаследованы.

Статическая семантика

Если аспект Default_Initial_Condition указан для типа T, то выражение начального условия по умолчанию применяется к T и ко всем потомкам T.

Динамическая семантика

Если одно или несколько выражений начального условия по умолчанию применяются к (не абстрактному) типу T, то проверка начального условия по умолчанию выполняется после успешной инициализации объекта типа T по умолчанию (см. 3.3.1). В случае контролируемого типа проверка выполняется после вызова процедуры инициализации типа (см. 7.6).
Если выполнение проверок требуется политикой утверждения Default_Initial_Condition (см. 11.4.2), действующей в момент соответствующего определения аспекта, применимого к данному типу, то соответствующее выражение начального условия по умолчанию считается активным.
Проверка начального условия по умолчанию состоит из оценки каждого активного выражения начального условия по умолчанию, применимого к T. Любые операции в таком выражении, которые были определены как примитивные операции (условного) формального производного типа NT, в ходе оценки выражения определяются как для формального производного типа в экземпляре, где T — фактический тип для NT (см. 12.5.1). Эти оценки, если их более одной, выполняются в произвольном порядке. Если хотя бы одна из них оценивается как False, Assertions.Assertion_Error поднимается в момент инициализации объекта.
Для формального параметра типа T проверка начального условия по умолчанию выполняется, как определено фактическим типом, вместе с любым начальным условием по умолчанию самого формального типа.

Разрешения реализации

Реализации могут расширять синтаксис или семантику аспекта Default_Initial_Condition определённым реализацией способом.
ПРИМЕЧАНИЕ. Пример использования этого аспекта см. в определении контейнера Vector в A.18.2.


Spec-Zone.ru

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