Справочное руководство по языку Ада-83


Подавление проверок


Присутствие прагмы SUPPRESS позволяет реализации опускать некоторые проверки во время выполнения программы. Эта прагма имеет следующий вид:

pragma

SUPPRESS (идентификатор [, [ON =>] имя]);-

Проверка, указанная идентификатором, может быть опущена. Имя (если оно присутствует) должно быть простым или расширенным и обозначать объект, тип или подтип, задачный модуль или настраиваемый модуль; оно также может быть именем подпрограммы, в этом случае имя обозначает все видимые совмещенные подпрограммы.

Прагма SUPPRESS допустима непосредственно в разделе описаний или непосредственно в спецификации пакета. Во втором случае допустимо представление прагмы только с именем, которое обозначает понятие (или несколько совмещенных подпрограмм), описанное непосредственно в спецификации пакета. Действие прагмы распространяется от местоположения прагмы до конца зоны описания, связанной с самым внутренним объемлющим оператором блока или программным модулем. Если прагма задана в спецификации пакета, то ее действие распространяется до конца области действия именованного понятия.

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

Следующие проверки соответствуют ситуациям, в которых может быть возбуждено исключение CONSTRAINT_ERROR. В этих проверках имя (если оно указано) должно обозначать объект или тип

ACCESS_CHECK

Проверяется именуемая компонента, индексируемая компонента, отрезок или атрибут объекта, указанный ссылочным значением на неравенство значению null этого ссылочного значения.

DISCRIMINANT_CHECK

Проверяется, что дискриминант составного значения удовлетворяет ограничению дискриминанта. Также при ссылке на компоненты записи проверяется их существование для текущих значений дискриминанта.

INDEX_CHECK

Проверяется, что границы значений индексов массива равны соответствующим границам ограничения индекса. Также при ссылке на компоненту массива по каждой размерности проверяется, что данное значение индекса находится в диапазоне, определенном границами индекса массива; при ссылке на отрезок массива проверяется, что заданный дискретный диапазон совместим с диапазоном, определенным границами индексов массива.

LENGTH_CHECK

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

RANGE_CHECK

Проверяется, что некоторое значение удовлетворяет ограничению диапазона. Также при предвыполнении указания подтипа проверяется совместимость ограничения (если оно имеется) с обозначением типа. Для агрегата проверяется принадлежность индекса или дискриминанта соответствующему подтипу. Наконец, осуществляются проверки любых ограничений, создаваемых при конкретизации настройки.

<




Начало  Назад  Вперед



Книжный магазин