10.1.5 Pragmas and Program Units
This subclause discusses pragmas related to program
units, library units, and
compilations.
Name Resolution Rules
Certain
pragmas
are defined to be
program unit pragmas.
A
name given
as the argument of a program unit pragma shall resolve to denote the
declarations or renamings of one or more program units that occur immediately
within the declarative region or
compilation
in which the
pragma
immediately occurs, or it shall resolve to denote the declaration of
the immediately enclosing program unit (if any); the
pragma
applies to the denoted program unit(s). If there are no
names
given as arguments, the
pragma
applies to the immediately enclosing program unit.
Legality Rules
A program unit pragma
shall appear in one of these places:
Immediately within the visible part of a program
unit and before any nested declaration (but not within a generic formal
part), in which case the argument, if any, shall be a
direct_name
that denotes the immediately enclosing program unit declaration.
Certain
program unit pragmas are defined to be
library unit pragmas. The
name, if any,
in a library unit pragma shall denote the declaration of a library unit.
Static Semantics
A library unit pragma that applies to a generic
unit does not apply to its instances, unless a specific rule for the
pragma specifies the contrary.
Post-Compilation Rules
Implementation Permissions
An implementation may require that configuration
pragmas that select partition-wide or system-wide options be compiled
when the environment contains no
library_items
other than those of the predefined environment. In this case, the implementation
shall still accept configuration pragmas in individual compilations that
confirm the initially selected partition-wide or system-wide options.
Implementation Advice
When applied to a generic unit, a program unit pragma
that is not a library unit pragma should apply to each instance of the
generic unit for which there is not an overriding pragma applied directly
to the instance.