Annotated Ada Reference ManualLegal Information
Contents   Index   References   Search   Previous   Next 

13.12.1 Language-Defined Restrictions

Static Semantics

1/2
{AI95-00257-01} The following restriction_identifiers are language-defined (additional restrictions are defined in the Specialized Needs Annexes):
2/2
{AI95-00257-01} {Restrictions (No_Implementation_Attributes)} No_Implementation_Attributes 

There are no implementation-defined attributes. This restriction applies only to the current compilation or environment, not the entire partition.
2.a/2
Discussion: This restriction (as well as No_Implementation_Pragmas) only applies to the current compilation, because it is likely that the runtime (and possibly user-written low-level code) will need to use implementation-defined entities. But a partition-wide restriction applies everywhere, including the runtime. 
3/2
{AI95-00257-01} {Restrictions (No_Implementation_Pragmas)} No_Implementation_Pragmas 

There are no implementation-defined pragmas or pragma arguments. This restriction applies only to the current compilation or environment, not the entire partition.
4/2
{AI95-00368-01} {Restrictions (No_Obsolescent_Features)} No_Obsolescent_Features 

There is no use of language features defined in Annex J. It is implementation-defined if uses of the renamings of J.1 are detected by this restriction. This restriction applies only to the current compilation or environment, not the entire partition. 
4.a/2
Reason: A user could compile a rename like 
4.b/2
with Ada.Text_IO;
package Text_IO renames Ada.Text_IO;
4.c/2
Such a rename must not be disallowed by this restriction, nor should the compilation of such a rename be restricted by an implementation. Many implementations implement the renames of J.1 by compiling them normally; we do not want to require implementations to use a special mechanism to implement these renames. 
5/2
{AI95-00381-01} The following restriction_parameter_identifier is language defined:
6/2
{AI95-00381-01} {Restrictions (No_Dependence)} No_Dependence 

Specifies a library unit on which there are no semantic dependences.

Legality Rules

7/2
{AI95-00381-01} The restriction_parameter_argument of a No_Dependence restriction shall be a name; the name shall have the form of a full expanded name of a library unit, but need not denote a unit present in the environment.
7.a/2
Ramification: This name is not resolved. 

Post-Compilation Rules

8/2
{AI95-00381-01} No compilation unit included in the partition shall depend semantically on the library unit identified by the name.
8.a/2
Ramification: There is no requirement that the library unit actually exist. One possible use of the pragma is to prevent the use of implementation-defined units; when the program is ported to a different compiler, it is perfectly reasonable that no unit with the name exist. 

Extensions to Ada 95

8.b/2
{AI95-00257-01} {AI95-00368-01} {extensions to Ada 95} Restrictions No_Implementation_Attributes, No_Implementation_Pragmas, and No_Obsolescent_Features are new.
8.c/2
{AI95-00381-01} Restriction No_Dependence is new. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Sponsored by Ada-Europe