J.10 Specific Suppression of Checks
{
AI95-00224-01}
Pragma Suppress can be used to suppress checks on specific entities.
Syntax
Legality Rules
Static Semantics
{
AI95-00224-01}
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
pragma is
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
11.5). Which checks are associated with a
specific entity is not defined by this International Standard.
Discussion: The language doesn't specify
exactly which entities control whether a check is performed. For example,
in
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.
Implementation Permissions
{
AI95-00224-01}
An implementation is allowed to place restrictions on specific Suppress
pragmas.
Wording Changes from Ada 95
{
AI95-00224-01}
This clause 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.