J.10 Specific Suppression of Checks
Pragma Suppress can be used to suppress checks on specific entities.
A specific Suppress pragma
applies to the named check from the place of the pragma
to the end of the innermost enclosing declarative region, or, if the
given in a package_specification
to the end of the scope of the named entity. The pragma
applies only to the named entity, or, for a subtype, on objects and values
of its type. A specific Suppress pragma
suppresses the named check for any entities to which it applies (see
). Which checks are associated with a
specific entity is not defined by this document.
Discussion: The language doesn't specify
exactly which entities control whether a check is performed. For example,
pragma Suppress (Range_Check, On => A);
A := B;
whether or not the range check is performed
is not specified. The compiler may require that checks are suppressed
on B or on the type of A in order to omit the range check.
An implementation is allowed to place restrictions on specific Suppress
Wording Changes from Ada 95
This subclause is new. This feature was moved here because it is important
for pragma Unsuppress that there be an unambiguous meaning for each checking
pragma. For instance, in the example
pragma Suppress (Range_Check);
pragma Unsuppress (Range_Check, On => A);
A := B;
the user needs to be able to depend on the range
check being made on the assignment. But a compiler survey showed that
the interpretation of this feature varied widely; trying to define this
carefully was likely to cause a lot of user and implementer pain. Thus
the feature was moved here, to emphasize that its use is not portable.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe