CVS difference for ai05s/ai05-0115-1.txt
--- ai05s/ai05-0115-1.txt 2011/05/14 07:21:26 1.16
+++ ai05s/ai05-0115-1.txt 2011/06/20 04:55:17 1.17
@@ -5,6 +5,7 @@
!standard 7.3.1(5/1)
!class binding interpretation 08-10-15
!status Amendment 2012 11-05-14
+!status ARG Approved (by Letter Ballot) 11-0-0 11-05-16
!status work item 08-10-15
!status received 08-07-25
!priority Medium
@@ -70,10 +71,10 @@
end Pak1.Pak3;
-(A) is illegal by 7.3.1(4). Although the component F1 of the grandparent type
+(A) is illegal by 7.3.1(4). Although the component C1 of the grandparent type
has become visible in the body of Pak1.Pak3, 7.3.1(4) speaks about "additional
characteristics of the parent type" becoming visible, and there isn't any place
-where the hidden component F1 of the type T2 becomes visible. AI95-0157 confirms
+where the hidden component C1 of the type T2 becomes visible. AI95-0157 confirms
this interpretation.
That means that (B) is illegal, because one of the component names is not visible.
@@ -2955,5 +2956,54 @@
(root-integer) with all descendants of Integer to allow integer literals to be
used with types that are "secretly" derived from Integer, like the example given
in the AI.
+
+****************************************************************
+
+From: Brad Moore
+Sent: Sunday, May 15, 2011 2:52 PM
+
+[Appropriate part of a large message - Editor.]
+
+> AI05-0115-1/10 Aggregates with components that are not visible
+> [Changes since phone meeting: Changed the rules to not disallow conversions,
+> as that is harmless and potentially incompatible.]
+> Approve __X____ Disapprove ______ Abstain _______
+
+Editorial Comment: In the question section, it mentions the component F1, yet
+there is no such component in the examples. It seems C1 is intended for the first
+occurrence of F1, and C2 is intended for the second occurrence. Also in procedure
+Foo body, it seems N := R.C2; is intended at A.
+For place C, I think C1 is intended instead of C2. ie. R := (C1 => 2,
+C3 => 3, others => 1);
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Tuesday, May 17, 2011 12:52 AM
+
+For the record:
+
+> Editorial Comment: In the question section, it mentions the component
+> F1, yet there is no such component in the examples.
+> It seems C1 is intended for the first occurrence of F1, and
+> C2 is intended for the second occurrence.
+
+Actually, both of these should be C1. The second occurrence is talking
+about the hidden inherited C1; the explicit component C2 is not hidden
+(it's visible in the spec, obviously).
+
+> Also in procedure
+> Foo body, it seems N := R.C2; is intended at A.
+
+No, the problem is with "grandparent" inheritance, so we need to talk about
+the component from the grandparent. And this *is* illegal, even though you can
+see the C1 of the grandparent. That's where the problem stems. It's perfectly
+OK to reference C2: this is a visible component.
+
+> For place C, I think C1 is intended instead of C2. ie. R := (C1 => 2,
+> C3 => 3, others => 1);
+
+No, the point is that C1 is being referenced via the "others"; thus it is
+not being referenced by name.
****************************************************************
Questions? Ask the ACAA Technical Agent