CVS difference for ais/ai-00257.txt
--- ais/ai-00257.txt 2001/02/16 04:55:41 1.2
+++ ais/ai-00257.txt 2001/06/05 00:03:27 1.3
@@ -1,4 +1,4 @@
-!standard 13.12 (07) 01-02-12 AI95-00257/01
+!standard 13.12 (07) 01-06-04 AI95-00257/02
!class amendment 01-02-12
!status work item 01-02-12
!status received 01-02-12
@@ -11,17 +11,16 @@
The following restrictions identifiers exist:
-Ada code containing implementation-defined attributes, pragmas, and
-restrictions identifiers is much less portable than code that does not
-contain such items. However, it is difficult to prove that a given piece of
-Ada code does not contain any implementation-defined items. It can be
-accomplished by searching for the names of each possible implementation-defined
-entity, but this is error-prone and can be very time consuming if an
-implementation has many implementation-defined items.
+Ada code containing implementation-defined attributes and pragmas is much less
+portable than code that does not contain such items. However, it is difficult
+to prove that a given piece of Ada code does not contain any
+implementation-defined items. It can be accomplished by searching for the
+names of each possible implementation-defined entity, but this is error-prone
+and can be very time consuming if an implementation has many
@@ -32,24 +31,46 @@
+These restrictions do not apply to partitions; a partition may include
+compilations to which these restrictions do not apply.
-Should these options be other than partition-wide? Note that pragma Restrictions
-is a configuration pragma, and 10.1.5(8) says that configuration pragmas are
-generally used to select a partition-wide or system-wide option.
-Are pragmas, attributes, and restrictions defined by WG9-approved amendments
-implementation-defined or language-defined. I can think of good arguments
-either way? Perhaps an additional identifier: No_Amendments would be good idea.]
+ARG approved amendments are considered "language-defined". If a user
+wishes to avoid depending on amendments, they should use pragma Feature (see
+AI-222) or other facilities defined by the implementation for that purpose.
+Some implementation-defined pragma arguments are common (for instance, the
+convention "StdCall" on Windows). If the No_Implementation_Pragmas applied
+to entire partitions, it would be impossible to use it on any program targeting
+Windows (as all of the system calls use "StdCall", not "C", and restrictions
+apply to the runtime library). More generally, it is often not useful to apply
+these restrictions to the runtime and user-written low-level packages.
+Therefore, these restrictions are defined to not apply to entire partitions.
+The following restrictions identifiers are language-defined:
+There are no implementation-defined attributes. This restriction does not apply
+to partitions; a partition may include some compilations to which this
+restrictions apply and some to which this restriction does not apply.
+There are no implementation-defined pragmas or pragma arguments. This
+restriction does not apply to partitions; a partition may include some
+compilations to which this restrictions apply and some to which this
+restriction does not apply.
+B-Tests should be constructed to verify that these restrictions are enforced.
Questions? Ask the ACAA Technical Agent