J.15 Aspect-related Pragmas
{
AI05-0229-1}
Pragmas can be used as an alternative to aspect_specifications to specify
certain aspects.
Name Resolution Rules
{
AI12-0417-1}
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.
Ramification: The fact that this is a
Name Resolution Rule means that the
pragma
will not apply to declarations from outer declarative regions.
Legality Rules
{
AI12-0417-1}
A program unit pragma shall appear in one of these places:
{
8652/0033}
{
AI95-00136-01}
{
AI12-0417-1}
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.
Ramification: The argument is optional
in this case.
{
AI05-0132-1}
{
AI12-0417-1}
Certain
program unit pragmas are defined to be
library unit pragmas. If
a library unit pragma applies to a program unit, the program unit shall
be a library unit.
Static Semantics
{
8652/0034}
{
AI95-00041-01}
{
AI12-0417-1}
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.
Implementation Advice
{
8652/0034}
{
AI95-00041-01}
{
AI12-0417-1}
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.
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.
Wording Changes from Ada 2005
{
AI05-0229-1}
{
AI05-0299-1}
This subclause is new. Many existing pragmas have been converted into
aspects; the pragmas have moved here.
{
AI05-0132-1}
{
AI12-0417-1}
Correction: A library unit pragma must apply directly to a library
unit, even if no name is given in the pragma.
Wording Changes from Ada 2012
{
AI12-0417-1}
The terms “program unit pragma” and “library unit pragma”
were moved here as all of the
pragmas
that use these terms are now in this annex.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe