13.12.1 Language-Defined Restrictions and Profiles
Static Semantics
The following 
restriction_identifiers 
are language defined (additional restrictions are defined in the Specialized 
Needs Annexes):
 No_Implementation_Aspect_Specifications 
 
There are no implementation-defined aspects specified by an 
aspect_specification. 
This restriction applies only to the current compilation or environment, 
not the entire partition. 
No_Implementation_Attributes 
There are no implementation-defined attributes. This restriction applies 
only to the current compilation or environment, not the entire partition. 
 No_Implementation_Identifiers 
 
There are no usage names that denote declarations with implementation-defined 
identifiers that occur within language-defined packages or instances 
of language-defined generic packages. Such identifiers can arise as follows: 
The following 
language-defined packages and generic packages allow implementation-defined 
identifiers:
package System (see 
13.7);
package Standard (see 
A.1);
package Ada.Command_Line (see 
A.15);
package Interfaces.C (see 
B.3);
package Interfaces.C.Strings (see 
B.3.1);
package Interfaces.C.Pointers (see 
B.3.2);
package Interfaces.COBOL (see 
B.4);
package Interfaces.Fortran (see 
B.5); 
The following 
language-defined packages contain only implementation-defined identifiers:
package System.Machine_Code (see 
13.8);
package Ada.Directories.Information 
(see 
A.16);
nested Implementation packages of 
the Queue containers (see 
A.18.28-31);
package Interfaces (see 
B.2);
package Ada.Interrupts.Names (see 
C.3.2).
For package Standard, Standard.Long_Integer 
and Standard.Long_Float are considered language-defined identifiers, 
but identifiers such as Standard.Short_Short_Integer are considered implementation-defined.
This restriction applies only to the current 
compilation or environment, not the entire partition.
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.
There is no mention in the 
context_clause 
of any implementation-defined descendants of packages Ada, Interfaces, 
or System. This restriction applies only to the current compilation or 
environment, not the entire partition.
There is no use of language features defined in Annex J. It is implementation 
defined whether uses of the renamings of 
J.1 
and of the 
pragmas 
of 
J.15 are detected by this restriction. 
This restriction applies only to the current compilation or environment, 
not the entire partition. 
The following 
restriction_parameter_identifiers 
are language defined:
Specifies a library unit on which there are no semantic dependences.
 No_Specification_of_Aspect 
 
Identifies an attribute for which no 
attribute_reference 
or 
attribute_definition_clause 
is given.
Identifies a 
pragma 
which is not to be used.
There are no 
aspect_specifications 
having an unrecognized 
aspect_identifier. 
This restriction applies only to the current compilation or environment, 
not the entire partition.
There are no 
pragmas 
having an unrecognized pragma 
identifier. 
This restriction applies only to the current compilation or environment, 
not the entire partition.
Legality Rules
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 can be a 
name that has no corresponding unit currently present in the environment.
 The 
restriction_parameter_argument 
of a No_Use_Of_Attribute restriction shall be an 
identifier 
or one of the reserved words Access, Delta, Digits, Mod, or Range; this 
is an identifier specific to a pragma.
Post-Compilation Rules
No compilation unit included in the partition shall 
depend semantically on the library unit identified by the 
name 
of a No_Dependence restriction.
Static Semantics
The following 
profile_identifier 
is language defined:
No_Implementation_Extensions 
The No_Implementation_Extensions 
usage profile is equivalent to the following restrictions: 
No_Implementation_Aspect_Specifications,
No_Implementation_Attributes,
No_Implementation_Identifiers,
No_Implementation_Pragmas,
No_Implementation_Units.
 Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe