CVS difference for ai05s/ai05-0100-1.txt
--- ai05s/ai05-0100-1.txt 2008/10/24 00:37:08 1.2
+++ ai05s/ai05-0100-1.txt 2008/12/02 06:01:19 1.3
@@ -1,6 +1,8 @@
-!standard 2.8(6) 08-10-23 AI05-0100-1/02
+!standard 2.8(6) 08-11-19 AI05-0100-1/03
!standard 2.8(7)
!class binding interpretation 08-05-28
+!status Amendment 201Z 08-11-26
+!status ARG Approved 8-0-1 08-10-31
!status work item 08-05-28
!status received 06-04-15
!priority Low
@@ -10,7 +12,8 @@
!summary
-Pragmas are allowed as the only item in a list if that list is allowed to be empty.
+For lists that allow pragmas, if the list may have no elements, then the list may
+consist solely of pragmas.
!question
@@ -60,7 +63,7 @@
come at the place of a basic_declarative_item). This is disturbing because
it would mean the definition of the package Ada in A.2 is illegal!
-What is the intent of this wording? (Beats me.)
+What is the intent of this wording?
!wording
@@ -69,8 +72,8 @@
AARM NOTE: Language Design Principle
In general, if all pragmas are erased from a program, the program should
remain both syntactically and semantically legal. There are a few exceptions
- to this general principle (e.g. pragma Import can eliminate the need for
- a completion), but the principle remains, and is strictly true at the
+ to this general principle (for example, pragma Import can eliminate the need
+ for a completion), but the principle remains, and is strictly true at the
syntactic level. Certainly any implementation-defined pragmas should
obey this principle both syntactically and semantically, so that if
the pragmas are simply ignored by some other implementation, the program
@@ -89,9 +92,10 @@
categories variant or exception_handler; but not in place of
such a construct {if the construct is required, or is
part of a list that is required to have at least one such
- construct [Redundant:, as in a sequence_of_statements]}.
- Also at any place where a compilation_unit would be allowed.
+ construct [Redundant:, as in a sequence_of_statements]}.
+ * At any place where a compilation_unit would be allowed.
+
!discussion
We have added an explicit language design principle to establish the
@@ -105,12 +109,30 @@
of confusion. We have qualified the phrase a bit by making it clear it
applies when the construct is required or is part of a list that must have
at least one element. Hopefully this will remove some of the mystery.
+
+!corrigendum 2.8(7)
+
+@drepl
+@xbullet<At any place where the syntax rules allow a construct defined by a
+syntactic category whose name ends with "@fa<declaration>", "@fa<statement>",
+"@fa<clause>", or "@fa<alternative>", or one of the syntactic categories
+@fa<variant> or @fa<exception_handler>;
+but not in place of such a construct.
+Also at any place where a @fa<compilation_unit> would be allowed.>
+@dby
+@xbullet<At any place where the syntax rules allow a construct defined by a
+syntactic category whose name ends with "@fa<declaration>", "@fa<item>",
+"@fa<statement>", "@fa<clause>", or "@fa<alternative>", or one of the
+syntactic categories @fa<variant> or @fa<exception_handler>;
+but not in place of such a construct if the construct is required, or is
+part of a list that is required to have at least one such
+construct, as in a @fa<sequence_of_statements>.>
---!corrigendum 2.8(7)
+@xbullet<At any place where a @fa<compilation_unit> would be allowed.>
!ACATS Test
-ACATS B-Test should be constructed to ensure that pragmas are not allowed in
+ACATS B-Test(s) should be constructed to ensure that pragmas are not allowed in
illegal places. (This is a syntax rule, but since it is given by text rather
than semantic rules, and there is little use of pragmas in the ACATS, extra
testing is needed.)
Questions? Ask the ACAA Technical Agent