J.10 Specific Suppression of Checks 
1/2
{
AI95-00224-01} 
Pragma Suppress can be used to suppress checks 
on specific entities. Syntax
2/2
{
AI95-00224-01} 
The form of a specific Suppress pragma 
is as follows: 3/2
  pragma 
Suppress(identifier, 
[On =>] name); 
 
Legality Rules
4/2
{
AI95-00224-01} 
The identifier shall 
be the name of a check (see 11.5). The name 
shall statically denote some entity.5/2
{
AI95-00224-01} 
For a specific Suppress pragma 
that is immediately within a package_specification, 
the name shall denote an entity (or several 
overloaded subprograms) declared immediately within the package_specification. 
Static Semantics
6/2
{
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.6.a/2
Discussion: The 
language doesn't specify exactly which entities control whether a check 
is performed. For example, in 
6.b
pragma Suppress (Range_Check, On => A);
A := B;
6.c
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
7/2
{
AI95-00224-01} 
An implementation is allowed to place restrictions 
on specific Suppress pragmas. 8/2
3  {
AI95-00224-01} 
An implementation may support a similar On parameter 
on pragma Unsuppress (see 11.5). 
Wording Changes from Ada 95
8.a/2
{
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 
8.b
pragma Suppress (Range_Check);
pragma Unsuppress (Range_Check, On => A);
A := B;
8.c
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.