CVS difference for ais/ai-00362.txt

Differences between 1.5 and version 1.6
Log of other versions for file ais/ai-00362.txt

--- ais/ai-00362.txt	2004/04/30 00:24:27	1.5
+++ ais/ai-00362.txt	2004/07/27 23:01:06	1.6
@@ -1,14 +1,20 @@
-!standard  03.09(06)                                   04-04-29  AI95-00362/03
+!standard  03.09(06)                                   04-06-29  AI95-00362/04
 !standard  11.04.01(02)
 !standard  11.04.01(03)
+!standard  13.07(03)
+!standard  13.07(36)
+!standard  13.07.1(03)
+!standard  13.07.1(15)
 !standard  A.03.02(02)
-!standard  A.08.01(02)
-!standard  A.08.04(02)
+!standard  A.04.02(03)
+!standard  A.04.06(03)
 !standard  C.07.01(02)
 !standard  D.05(03)
 !standard  D.10(03)
 !standard  D.11(03)
 !class amendment 03-11-26
+!status Amendment 200Y 04-06-29
+!status ARG Approved 9-0-0  04-06-13
 !status work item 03-11-26
 !status received 03-10-04
 !priority Medium
@@ -96,7 +102,7 @@
    package Ada.Characters.Handling is
       pragma Pure(Handling);
 
-Change A.4.3(3) to
+Change A.4.2(3) to
    package Ada.Strings.Maps is
       pragma Pure(Maps);
 
@@ -164,14 +170,6 @@
 agreement with them), we did not propose to make any unit with significant
 initial state preelaborated.
 
-[Open Issue: It has been suggested that providing a simple logging I/O package
-for use in preelaborated units would be a better alternative than trying to
-make any of the existing package preelaborated. Such a package would include
-only simple Open/Create/Delete/Close and Character and String I/O facilities
-(similar to those in Text_IO) in a preelaborated package. Should this idea be
-persued?]
-
-
 Standard -- A.1; Pure
 Ada -- A.2; Pure
 Ada.Asynchronous_Task_Control -- D.11; not categorized.
@@ -380,9 +378,10 @@
 Ada.Synchronous_Task_Control -- D.10; not categorized
   This package is really an interface to the tasking runtime, and any state
   needed is either in it or in Suspension_Object. There should be no need
-  for any separate initialization. The routines it depends upon must be able to be called from a pure package
-  (it is perfectly possible to declare or rendezvous with a task in a pure
-  package). Thus, this package should be Preelaborated.
+  for any separate initialization. The routines it depends upon must be able
+  to be called from a pure package (it is perfectly possible to declare or
+  rendezvous with a task in a pure package). Thus, this package should be
+  Preelaborated.
 Ada.Tags -- 3.9; not categorized
   Package Tags has state, so it cannot be pure. That state is generally either
   set up at link-time (before elaboration) or during the elaboration of tagged
@@ -450,11 +449,16 @@
 System -- 13.7; Preelaborate
   Ada 95 already *allows* this to be Pure. It did not require this to be pure
   because we did not want to require System.Address to be transmitted between
-  partitions. However, AI-366 makes these separate issues. Moreover, all of
-  the existing compiler implementers that responded reported that System was
-  already Pure in their compiler. Therefore, this package should be pure.
-  [Open issue: should we *require* this to work across partitions, or should
-  we have a *permission* for this to work across partitions.]
+  partitions. However, all of the existing compiler implementers that responded
+  reported that System was already Pure in their compiler (and thus
+  transmitting was supported). Since that is not considered an issue by
+  implementers, we should simply define this package as pure.
+
+  Note that making this Pure may require some implementations to support
+  explicit 'Read/'Write redefinitions, as AI-366 requires that of any
+  type which has an access type part. It is known that some implementations
+  implement Address as a private type with a full type that is an access type.
+  This is not a problem, as 13.7(36) allows anything to be added to System.
 System.Address_To_Access_Conversions -- 13.7.2; Preelaborate
   Declares a named access type with a non-empty pool; thus it cannot be Pure.
 System.Machine_Code -- 13.8; unspecified
@@ -474,8 +478,162 @@
 !example
 
 None needed for this proposal.
+
+!corrigendum 3.9(06)
+
+@drepl
+@xcode<@b<package> Ada.Tags @b<is>
+    @b<type> Tag @b<is private>;>
+@dby
+@xcode<@b<package> Ada.Tags @b<is>
+    @b<pragma> Preelaborate(Tags);
+    @b<type> Tag @b<is private>;>
+
+!corrigendum 11.4.1(02)
+
+@drepl
+@xcode<@b<package> Ada.Exceptions @b<is>
+    @b<type> Exception_Id @b<is private>;
+    Null_Id : @b<constant> Exception_Id;
+    @b<function> Exception_Name(Id : Exception_Id) @b<return> String;>
+@dby
+@xcode<@b<package> Ada.Exceptions @b<is>
+    @b<pragma> Preelaborate(Exceptions);
+    @b<type> Exception_Id @b<is private>;
+    @b<pragma> Preelaborable_Initialization (Exception_Id);
+    Null_Id : @b<constant> Exception_Id;
+    @b<function> Exception_Name(Id : Exception_Id) @b<return> String;>
+
+!corrigendum 11.4.1(03)
+
+@drepl
+@xcode<    @b<type> Exception_Occurrence @b<is limited private>;
+    @b<type> Exception_Occurrence_Access @b<is access all> Exception_Occurrence;
+    Null_Occurrence : @b<constant> Exception_Occurrence;>
+@dby
+@xcode<    @b<type> Exception_Occurrence @b<is limited private>;
+    @b<pragma> Preelaborable_Initialization (Exception_Occurrence);
+    @b<type> Exception_Occurrence_Access @b<is access all> Exception_Occurrence;
+    Null_Occurrence : @b<constant> Exception_Occurrence;>
+
+!corrigendum 13.7(03)
+
+@drepl
+@xcode<@b<package> System @b<is>
+   @b<pragma> Preelaborate(System);>
+@dby
+@xcode<@b<package> System @b<is>
+   @b<pragma> Pure(System);>
+
+!corrigendum 13.7(36)
+
+@drepl
+An implementation may add additional implementation-defined declarations to
+package System and its children. However, it is usually better for the
+implementation to provide additional functionality via implementation-defined
+children of System. Package System may be declared pure.
+@dby
+An implementation may add additional implementation-defined declarations to
+package System and its children. However, it is usually better for the
+implementation to provide additional functionality via implementation-defined
+children of System.
+
+!corrigendum 13.7.1(03)
+
+@drepl
+@xcode<@b<package> System.Storage_Elements @b<is>
+   @b<pragma> Preelaborate(System.Storage_Elements);>
+@dby
+@xcode<@b<package> System.Storage_Elements @b<is>
+   @b<pragma> Pure(System.Storage_Elements);>
+
+!corrigendum 13.7.1(15)
+
+@ddel
+Package System.Storage_Elements may be declared pure.
+
+!corrigendum A.3.2(02)
+
+@drepl
+@xcode<@b<package> Ada.Characters.Handling @b<is>
+   @b<pragma> Preelaborate(Handling);>
+@dby
+@xcode<@b<package> Ada.Characters.Handling @b<is>
+   @b<pragma> Pure(Handling);>
+
+!corrigendum A.4.2(03)
+
+@drepl
+@xcode<@b<package> Ada.Strings.Maps @b<is>
+   @b<pragma> Preelaborate(Maps);>
+@dby
+@xcode<@b<package> Ada.Strings.Maps @b<is>
+   @b<pragma> Pure(Maps);>
+
+!corrigendum A.4.6(03)
+
+@drepl
+@xcode<@b<package> Ada.Strings.Maps.Constants @b<is>
+   @b<pragma> Preelaborate(Constants);>
+@dby
+@xcode<@b<package> Ada.Strings.Maps.Constants @b<is>
+   @b<pragma> Pure(Constants);>
+
+!corrigendum C.7.1(02)
+
+@drepl
+@xcode<@b<package> Ada.Task_Identification @b<is>
+   @b<type> Task_ID @b<is private>;
+   Null_Task_ID : @b<constant> Task_ID;
+   @b<function>  "=" (Left, Right : Task_ID) @b<return> Boolean;>
+@dby
+@xcode<@b<package> Ada.Task_Identification @b<is>
+   @b<pragma> Preelaborate(Task_Identification);
+   @b<type> Task_ID @b<is private>;
+   @b<pragma> Preelaborable_Initialization (Task_Id);
+   Null_Task_ID : @b<constant> Task_ID;
+   @b<function>  "=" (Left, Right : Task_ID) @b<return> Boolean;>
+
+!corrigendum D.5(03)
+
+@drepl
+@xcode<@b<with> System;
+@b<with> Ada.Task_Identification; -- See C.7.1
+@b<package> Ada.Dynamic_Priorities @b<is>>
+@dby
+@xcode<@b<with> System;
+@b<with> Ada.Task_Identification; -- See C.7.1
+@b<package> Ada.Dynamic_Priorities @b<is>
+  @b<pragma> Preelaborate(Dynamic_Priorities);>
+
+!corrigendum D.10(03)
+
+@drepl
+@xcode<@b<package> Ada.Synchronous_Task_Control @b<is>>
+@dby
+@xcode<@b<package> Ada.Synchronous_Task_Control @b<is>
+   @b<pragma> Preelaborate(Synchronous_Task_Control);>
+
+!corrigendum D.11(03)
+
+@drepl
+@xcode<@b<with> Ada.Task_Identification;
+@b<package> Ada.Asynchronous_Task_Control is
+   @b<procedure> Hold(T : @b<in> Ada.Task_Identification.Task_ID);
+   @b<procedure> Continue(T : @b<in> Ada.Task_Identification.Task_ID);
+   @b<function> Is_Held(T : Ada.Task_Identification.Task_ID)
+      @b<return> Boolean;
+@b<end> Ada.Asynchronous_Task_Control;>
+@dby
+@xcode<@b<with> Ada.Task_Identification;
+@b<package> Ada.Asynchronous_Task_Control is
+   @b<pragma> Preelaborate(Asynchronous_Task_Control);
+   @b<procedure> Hold(T : @b<in> Ada.Task_Identification.Task_ID);
+   @b<procedure> Continue(T : @b<in> Ada.Task_Identification.Task_ID);
+   @b<function> Is_Held(T : Ada.Task_Identification.Task_ID)
+      @b<return> Boolean;
+@b<end> Ada.Asynchronous_Task_Control;>
 
---!corrigendum
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent