CVS difference for ai12s/ai12-0311-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0311-1.txt

--- ai12s/ai12-0311-1.txt	2019/02/07 06:08:43	1.1
+++ ai12s/ai12-0311-1.txt	2019/02/22 05:31:43	1.2
@@ -1,4 +1,4 @@
-!standard 11.4.2(23.5/5)                                  19-02-06  AI12-0311-1/01
+!standard 11.4.2(23.5/5)                                  19-02-21  AI12-0311-1/02
 !standard 11.5(23)
 !standard 11.5(26)
 !reference AI12-0112-1
@@ -46,88 +46,38 @@
 
 Add after 11.5(23):
 
-Redundant[The following checks correspond to situations in which the exception
-Assertion_Error is raised upon failure of a language-defined check.] 
+Redundant[The following checks correspond to situations in which the
+exception Assertion_Error is raised upon failure of a language-defined
+check.] For a language-defined unit U associated with one of these
+checks in the list below, the check refers to performance of checks
+associated with the Pre, Static_Predicate, and Dynamic_Predicate
+aspects associated with any entity declared in a descendant of U, or
+in an instance of a generic unit which is, or is declared in, a
+descendant of U. Each check is associated with one or more units:
+
+   Calendar_Assertion_Check: Calendar.
+   Characters_Assertion_Check: Characters, Wide_Characters,
+     and Wide_Wide_Characters.
+   Containers_Assertion_Check: Containers.
+   IO_Assertion_Check: Sequential_IO, Direct_IO, Text_IO,
+      Wide_Text_IO, Wide_Wide_Text_IO, and Storage_IO,
+      Streams.Stream_IO, and Directories.
+   Interfaces_Assertion_Check: Interfaces.
+   Numerics_Assertion_Check: Numerics.
+   Strings_Assertion_Check: Strings.
+   System_Assertion_Check: System.
+
+  AARM Ramification: Any unit U is a descendant of itself.
+
+  AARM To be honest: The preceding rule about an instance of a generic
+  where the generic is declared in U really extends recursively to
+  handle the case of a generic package G1 which declares another
+  generic package G1.G2,  which declares another generic package
+  G1.G2.G3, etc. So if G1 is declared in some predefined unit U
+  then, for purposes of defining these checks, Some_Instance_Of_G1.G2
+  is also considered to be declared in U.
 
-Calendar_Assertion_Check
 
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of Calendar or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of Calendar.
-
-[Editor's note: There are four such packages, which seem like enough to have
-a suppression name for. So I've included it even though it was on no one's 
-list.]
-
-AARM Reason: One could use @b<pragma> Assertion_Policy to eliminate such checks,
-but that would require recompiling the Ada.Calendar packages (the assertion
-policy that determines whether the checks are made is that used to compile the
-unit). In addition, we do not want to specify the behavior of the
-Ada.Calendar operations if the precondition fails; that is different than
-the usual behavior of Assertion_Policy. By using Suppress for this purpose,
-we make it clear that a failed check that is suppressed means erroneous
-execution. This reason applies to all of the checks defined for 
-Assertion_Error.
-
-Characters_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of Characters, Wide_Characters, or Wide_Wide_Characters, or in an 
-instance of a generic unit that is declared in, or 
-is, a descendant unit of Characters, Wide_Characters, or Wide_Wide_Characters.
-
-Containers_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of Containers or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of Containers.
-
-IO_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of an IO unit or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of an IO unit. For this purpose, IO units are 
-Sequential_IO, Direct_IO, Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, 
-Storage_IO, Streams.Stream_IO, and Directories.
-
-[Editor's note: I left out IO_Exceptions here because it has no operations 
-or types, and I don't expect that it ever would get any.]
-
-Interfaces_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of Interfaces or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of Interfaces.
-
-Numerics_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of Numerics or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of Numerics.
-
-Strings_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of Strings or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of Strings.
-
-System_Assertion_Check
-
-Perform the checks associated with the Pre, Static_Predicate, and
-Dynamic_Predicate aspects associated with an entity declared in a descendant 
-unit of System or in an instance of a generic unit that is declared in, or 
-is, a descendant unit of System.
-
-
-
-
 Modify 11.5(26):
 
 If a given check has been suppressed, and the corresponding error situation
@@ -141,8 +91,8 @@
 We only allow suppressing assertions associated with checking client
 requirements for language-defined units; other assertions follow the rules of 
 the appropriate Assertion_Policy. Note that a predicate expression that 
-evaluates to False and uses aspect Predicate_Failure falls under the original
-rule.
+evaluates to False and uses aspect Predicate_Failure falls under the "error
+situation" case.
 
 !discussion
 

Questions? Ask the ACAA Technical Agent