Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

6.5.1 Предикат No_Return

Предикат pragma No_Return указывает, что процедура не может вернуть управление обычным образом; она может распространять исключение или циклически выполняться бесконечно.

Синтаксис

Форма предиката pragma No_Return, который является предикатным описанием (см. 13.1), выглядит следующим образом:
pragma No_Return(procedure_local_name{, procedure_local_name});

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

Каждый procedure_local_name должен обозначать одну или несколько процедур или обобщенных процедур; обозначенные сущности являются невозвращаемыми. procedure_local_name не должен обозначать процедуру без тела или экземпляр обобщенного блока.
Оператор return не должен применяться к невозвращаемой процедуре или обобщенной процедуре.
Процедура считается невозвращаемой, если она переопределяет диспетчеризованную невозвращаемую процедуру. В дополнение к местам, где обычно применяются правила легальности (см. 12.3), это правило применяется также в приватной части экземпляра обобщенного блока.
Если переименование-как-тело завершает объявление невозвращаемой процедуры, то переименованная процедура также должна быть невозвращаемой.

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

Если обобщенная процедура невозвращаемая, то и ее экземпляры также являются невозвращаемыми. Если процедура, объявленная внутри обобщенного блока, невозвращаемая, то соответствующие копии этой процедуры в экземплярах также являются невозвращаемыми.

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

Если тело невозвращаемой процедуры завершается нормально, то в точке вызова возникает ошибка Program_Error.

Примеры

procedure Fail(Msg : String); -- вызывает исключение Fatal_Error
pragma No_Return(Fail);
-- Сообщает компилятору и читателю, что процедура никогда не возвращает управление нормально


Spec-Zone.ru

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