CVS difference for 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