1.1.3 Conformity of an Implementation
conforming implementation shall:
Translate and correctly execute legal programs
written in Ada, provided that they are not so large as to exceed the
capacity of the implementation;
Identify all programs or program units that are
so large as to exceed the capacity of the implementation (or raise an
appropriate exception at run time);
Identify all programs or program units that contain
errors whose detection is required by this Reference Manual;
Supply all language-defined library units required
by this Reference Manual;
Contain no variations except those explicitly permitted
by this Reference Manual, or those that are impossible or impractical
to avoid given the implementation's execution environment;
Specify all such variations in the manner prescribed
by this Reference Manual.
of the execution of an Ada program is defined
in terms of its interactions with its external environment.
following are defined as external interactions
Any interaction with an external file (see A.7
Any call on an imported subprogram (see Annex
), including any parameters passed to it;
Any result returned or exception propagated from
a main subprogram (see 10.2
) or an exported
subprogram (see Annex B
) to an external caller;
Any read or update of an atomic or volatile object
The values of imported and exported objects (see
) at the time of any other interaction
with the external environment.
A conforming implementation of this Reference
Manual shall produce for the execution of a given Ada program a set of
interactions with the external environment whose order and timing are
consistent with the definitions and requirements of this Reference Manual
for the semantics of the given program.
An implementation that conforms to this Reference
Manual shall support each capability required by the core language as
specified. In addition, an implementation that conforms to this Reference
Manual may conform to one or more Specialized Needs Annexes (or to none).
Conformance to a Specialized Needs Annex means that each capability required
by the Annex shall be provided as specified.
An implementation conforming to this Reference Manual
may provide additional aspects, attributes, library units, and pragmas.
However, it shall not provide any aspect, attribute, library unit, or
pragma having the same name as an aspect, attribute, library unit, or
pragma (respectively) specified in a Specialized Needs Annex unless the
provided construct is either as specified in the Specialized Needs Annex
or is more limited in capability than that required by the Annex. A program
that attempts to use an unsupported capability of an Annex shall either
be identified by the implementation before run time or shall raise an
exception at run time.
For an implementation that conforms to this Reference
Manual, the implementation of a language-defined unit shall abide by
all postconditions, type invariants, and default initial conditions specified
for the unit by this document (see 11.4.2
aspects of the semantics are defined to be either implementation defined
. In such cases, the set of possible effects is
specified, and the implementation may choose any effect in the set. Implementations
shall document their behavior in implementation-defined situations, but
documentation is not required for unspecified situations. The implementation-defined
characteristics are summarized in M.2
The implementation may choose to document implementation-defined
behavior either by documenting what happens in general, or by providing
some mechanism for the user to determine what happens in a particular
If an implementation detects the use of an unsupported
Specialized Needs Annex feature at run time, it should raise Program_Error
If an implementation wishes to provide implementation-defined
extensions to the functionality of a language-defined library unit, it
should normally do so by adding children to the library unit.
NOTE The above requirements imply
that an implementation conforming to this Reference Manual can support
some of the capabilities required by a Specialized Needs Annex without
supporting all required capabilities.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe