CVS difference for ai05s/ai05-0051-1.txt

Differences between 1.11 and version 1.12
Log of other versions for file ai05s/ai05-0051-1.txt

--- ai05s/ai05-0051-1.txt	2009/06/09 05:27:08	1.11
+++ ai05s/ai05-0051-1.txt	2010/10/26 00:24:13	1.12
@@ -1,4 +1,4 @@
-!standard 3.10.2(14/2)                              09-06-01    AI05-0051-1/08
+!standard 3.10.2(14/2)                              10-10-25    AI05-0051-1/09
 !standard 3.10.2(14.4/2)
 !standard 3.10.2(19/2)
 !standard 6.5(21/2)
@@ -151,12 +151,13 @@
     level of the type determined by the subtype_indication, or by the
     tag of the value of the qualified_expression, is not deeper than
     that of the type of the allocator. If the [designated subtype]
-    {subtype determined by the subtype_indication or qualified_
-    expression} of the allocator has one or more [unconstrained] access
-    discriminants, then a check is made that the accessibility level of
-    the anonymous access type of each access discriminant is not deeper
-    than that of the type of the allocator. Program_Error is raised if
-    either such check fails.
+    {subtype determined by the subtype_indication or qualified_expression
+    (or by the tag of the value of the qualified_expression if the type
+    of the qualified_expression is class-wide)} of the allocator has one
+    or more [unconstrained] access discriminants, then a check is made
+    that the accessibility level of the anonymous access type of each
+    access discriminant is not deeper than that of the type of the
+    allocator. Program_Error is raised if either such check fails.
 
 In 6.5(5.6/2) replace
 
@@ -3110,5 +3111,90 @@
 Note that the phrase "part or coextension of a return object" does not include
 a subcomponent of a coextension. I understand that you were not proposing formal
 wording here.
+
+*****************************************************************
+
+From: Steve Baird
+Sent: Friday, October 22, 2010  5:53 PM
+
+I tried to construct some problem involving defaulted access discriminants and failed.
+
+I therefore hink all that is needed is a very small change.
+
+the dynamic check on access discriminants is given by
+
+Modify 4.8(10.1/2) as follows:
+    For any allocator, if the designated type of the type of the
+    allocator is class-wide, then a check is made that the accessibility
+    level of the type determined by the subtype_indication, or by the tag
+    of the value of the qualified_expression, is not deeper than that of
+    the type of the allocator. If the [designated subtype] {subtype
+    determined by the subtype_indication or qualified_expression} of the
+    allocator has one or more [unconstrained] access discriminants, then
+    a check is made that the accessibility level of the anonymous access
+    type of each access discriminant is not deeper than that of the type
+    of the allocator. Program_Error is raised if either such check fails.
+
+The first time we talk about the qualified_expression case, we correctly refer
+to the type determined "by the tag of the value of the qualified_expression".
+
+I think we need something similar the second time a qualified_expression is
+mentioned.
+
+The simplest would be to repeat the whole
+    type determined by the subtype_indication, or by the tag
+    of the value of the qualified_expression phrase in place of
+    subtype  determined by the subtype_indication or qualified_expression
+
+Alternatively, we could use and define a phrase, "the specific type of the
+allocated object" and then repeat that phrase the second time, as in
+
+    ... of the specific type of the allocated object (i.e., the type
+     determined by the subtype_indication, or by the tag of the value
+     of the qualfied expression)
+
+and then later
+
+     If the specific type of the allocated object has one or more ....
+
+Thoughts?
+
+*****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, October 25, 2010  6:23 PM
+
+This unfortunately doesn't make sense. This is the access discriminant case,
+right? You surely can have access discriminants on an untagged type, so what
+the "tag of the value of the qualified expression" means for an untagged type
+is completely unclear.
+
+I suppose you only really care about that for classwide qualified expressions;
+I think you'll need some longer-winded wording to make that clear.
+
+*****************************************************************
+
+From: Steve Baird
+Sent: Monday, October 25, 2010  6:23 PM
+
+Good catch. How about
+
+     Modify 4.8(10.1/2) as follows:
+
+      For any allocator, if the designated type of the type of the
+      allocator is class-wide, then a check is made that the
+      accessibility level of the type determined by the
+      subtype_indication, or by the tag of the value of the
+      qualified_expression, is not deeper than that of the type of the
+      allocator. If the subtype determined by the subtype_indication or
+      qualified_ expression (or by the tag of the value of the qualified
+      expression if the type of the qualified expression is class_wide)
+      of the allocator has one or more access discriminants, then a
+      check is made that the accessibility level of the anonymous access
+      type of each access discriminant is not deeper than that of the
+      type of the allocator. Program_Error is raised if either such check
+      fails.
+
+The only change is the parenthesized "(or by the tag ...)" wording.
 
 *****************************************************************

Questions? Ask the ACAA Technical Agent