CVS difference for ais/ai-00381.txt
--- ais/ai-00381.txt 2005/04/13 05:37:19 1.9
+++ ais/ai-00381.txt 2005/05/15 23:38:22 1.10
@@ -1,7 +1,9 @@
-!standard 13.12 (4) 05-03-28 AI95-00381/04
+!standard 13.12 (4) 05-05-05 AI95-00381/05
!standard 13.12.1 (1)
!class amendment 04-06-08
!status Amendment 200Y 04-06-29
+!status ARG Approved 10-1-0 05-04-16
+!status work item 05-03-28
!status WG9 approved 04-11-18
!status ARG Approved 11-0-1 04-06-17
!status work item 04-06-08
@@ -29,6 +31,14 @@
!wording
+ Change 13.12(4) to:
+
+ restriction ::= restriction_identifier
+ | restriction_parameter_identifier => restriction_parameter_argument
+
+ restriction_parameter_argument ::= name | expression
+
+
New section 13.12.1:
13.12.1 Restriction No_Dependence
@@ -38,26 +48,25 @@
The following restriction_parameter_identifier is language defined:
No_Dependence
- Specifies a language-defined library unit on which there
- are no semantic dependences.
+ Specifies a library unit on which there are no semantic
+ dependences.
Legality Rules
- The expression of the restriction_parameter_argument of a No_Dependence
- restriction shall have the form of a full expanded name of a library unit.
+ 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.
- AARM Note: This expression is not resolved; it is just a sequence of
- identifiers. There is no requirement for any of the identifiers to be
- defined in this unit or elsewhere.
+ AARM Ramification: This name is not resolved.
Post-Compilation Rule
No compilation unit included in the partition shall depend semantically
- on the library unit identified by the expression.
+ on the library unit identified by the name.
AARM Note: 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 posted to a different
+ implementation-defined units; when the program is ported to a different
compiler, it is perfectly reasonable that no unit with the name exist.
!discussion
@@ -95,6 +104,17 @@
pragma Restrictions(No_Dependence => Ada.Command_Line);
-- Example of restriction on language-defined package
+!corrigendum 13.12(4)
+
+@drepl
+@xcode<@fa<restriction ::= >@ft<@i<restriction_>>identifier
+ | >@ft<@i<restriction_parameter_>>@fa<identifier => expression>>
+@dby
+@xcode<@fa<restriction ::= >@ft<@i<restriction_>>identifier
+ | >@ft<@i<restriction_parameter_>>@fa<identifier => restriction_parameter_argument>>
+
+@xcode<@fa<restriction_parameter_argument ::= name | expression>>
+
!corrigendum 13.12.1(1)
@dinsc
@@ -107,14 +127,14 @@
@i<@s8<Legality Rules>>
-The @fa<expression> of the @fa<restriction_parameter_argument> of a
-No_Dependence restriction shall have the form of a full expanded
-name of a library unit.
+The @fa<restriction_parameter_argument> of a No_Dependence restriction shall be
+a @fa<name>; the @fa<name> shall have the form of a full expanded name of a
+library unit, but need not denote a unit present in the environment.
@i<@s8<Post-Compilation Rules>>
No compilation unit included in the partition shall depend semantically
-on the library unit identified by the @fa<expression>.
+on the library unit identified by the @fa<name>.
!ACATS test
Questions? Ask the ACAA Technical Agent