CVS difference for ais/ai-00257.txt

Differences between 1.2 and version 1.3
Log of other versions for file 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:
     No_Implementation_Attributes
     No_Implementation_Pragmas
-    No_Implementation_Restrictions
 
 !problem
 
-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
+implementation-defined items.
 
 !proposal
 
@@ -32,24 +31,46 @@
 
     No_Implementation_Attributes
     No_Implementation_Pragmas
-    No_Implementation_Restrictions
 
+These restrictions do not apply to partitions; a partition may include
+compilations to which these restrictions do not apply.
 
 !discussion
 
-[Open issues:
-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.
+
+!wording
+
+The following restrictions identifiers are language-defined:
+
+No_Implementation_Attributes
+
+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.
+
+No_Implementation_Pragmas
+
+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.
 
 !example
 
 !ACATS test
 
+B-Tests should be constructed to verify that these restrictions are enforced.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent