CVS difference for ais/ai-00246.txt

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

--- ais/ai-00246.txt	2001/01/29 23:33:42	1.5
+++ ais/ai-00246.txt	2001/10/19 01:36:44	1.6
@@ -1,4 +1,4 @@
-!standard 4.06  (12)                                00-11-07  AI95-00246/02
+!standard 4.06  (12)                                01-10-18  AI95-00246/03
 !class binding interpretation  00-10-31
 !status work item 00-10-31
 !status received 00-10-31
@@ -9,12 +9,13 @@
 
 !summary
 
-A conversion between two limited arrays that do not have a common ancestor is
-illegal.
+A value conversion between two limited arrays that do not have a common
+ancestor is illegal.
 
 A view conversion between two arrays that do not have a common ancestor is
-illegal if their component type has a private or visibly
-by-reference subcomponent.
+illegal if their component type has a subcomponent of a by-reference type or
+or anything that might turn out to be a by-reference type (that is, a private
+type).
 
 !question
 
@@ -101,8 +102,8 @@
    have a common ancestor, then neither type shall be limited.
 
    In an array view conversion, if the target type and the operand type do not
-   have a common ancestor, then the component subtype shall not have a private
-   or visibly by-reference subcomponent.
+   have a common ancestor, then the component subtype shall not have a tagged,
+   private, limited, or volatile subcomponent.
 
 These rules have the benefit of not breaking privateness of private types, nor
 need to define an "assume-the-worst" rule for generics. This holds to the
@@ -151,12 +152,12 @@
 @dby
 @xbullet<The component subtypes shall statically match; and>
 @xbullet<If the target type and the operand type do not
-have a common ancestor, then the neither type shall be limited; and>
+have a common ancestor, then neither type shall be limited; and>
 @xbullet<In a view conversion, the target type and the operand type shall both
 or neither have aliased components; and>
 @xbullet<In a view conversion, if the target type and the operand type do not
-have a common ancestor, then the component subtype shall not have a private or
-visibly by-reference subcomponent.>
+have a common ancestor, then the component subtype shall not have a tagged,
+private, limited, or volatile subcomponent.>
 
 !ACATS test
 
@@ -265,8 +266,8 @@
     procedure P (X : A1) is
     begin
         ... -- Here it seems legitimate for the generated code
-            -- to assume that the component size is 8, e.g. in indexing the
-array.
+            -- to assume that the component size is 8, e.g. in indexing
+            -- the array.
     end;
 
     Y : A2 := ...;
@@ -2596,7 +2597,9 @@
 might be task objects, etc.
 
 So clearly compilers are already doing rather different
-things with these "view" conversions.  Making the construct illegal will perhaps be doing people a favor.
+things with these "view" conversions.  Making the construct illegal will
+perhaps be doing people a favor.
+
 The fact that we have outlawed certain other cases
 of array-to-array view conversions makes me feel better
 about simply growing that set a bit to accommodate other
@@ -3317,3 +3320,18 @@
 I agree -- keep it as one AI.
 
 ****************************************************************
+
+From: Randy Brukardt
+Sent: Thursday, October 18, 2001 3:50 PM
+
+The minutes of the Bloomington meeting say:
+
+Change first paragraph of the summary to say "value conversion"; add
+"limited" to the second paragraph.
+
+The second change is incorrect: the "view" rule applies to non-limited
+by-reference types (that is, tagged types) as well as limited ones. Therefore,
+I did not make that change.
+
+****************************************************************
+

Questions? Ask the ACAA Technical Agent