CVS difference for ais/ai-00246.txt

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

--- ais/ai-00246.txt	2002/03/13 00:48:27	1.7
+++ ais/ai-00246.txt	2002/05/25 03:42:18	1.8
@@ -1,6 +1,7 @@
-!standard 4.06  (12)                                02-02-22  AI95-00246/04
+!standard 4.06  (12)                                02-05-14  AI95-00246/05
 !standard 4.06  (09)
 !class binding interpretation  00-10-31
+!status Amendment 200Y 02-05-14
 !status ARG Approved 6-0-0  02-02-12
 !status work item 00-10-31
 !status received 00-10-31
@@ -16,14 +17,13 @@
 
 A view conversion between two arrays that do not have a common ancestor is
 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).
+a private type (which might turn out to be a by-reference type).
 
 !question
 
 Consider the following example:
 
-    type T is limited null record; -- by-reference
+    type T is limited null record; -- by-reference type
     type A1 is array (1..2) of T;
     for A1'Component_Size use 8;
     type A2 is array (1..2) of T;
@@ -57,7 +57,7 @@
 Since the type in question is by-reference, the implementation cannot make a
 copy in order to get the appropriate representation.
 
-This issue is wider than just than view conversions. Consider:
+This issue is wider than just view conversions. Consider:
 
     procedure R (X : in A1) is
     begin
@@ -100,11 +100,11 @@
 
 The rules we've adopted are
 
-   In an array conversion, if the target type and the operand type do not
+   In an array value conversion, if the target type and the operand type do not
    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 tagged,
+   have a common ancestor, then the operand subtype shall not have a tagged,
    private, limited, or volatile subcomponent.
 
 These rules have the benefit of not breaking privateness of private types, nor
@@ -120,7 +120,7 @@
 as IN OUT parameters are not allowed on functions).
 
 Note that these rules have considerable overlap: both rules are triggered for
-the example in the question. However, both rules cover some cases that the
+the example in the question. However, each rule covers some cases that the
 other does not: the first covers value conversions of limited types, and the
 second covers view conversions of non-limited by-reference types.
 
@@ -139,7 +139,7 @@
 
 These rules were rejected mainly because they cannot be checked until both the
 target and operand types are frozen. (As we saw previously, conversions can
-happen before freezing in default expressions). In addition, these rules
+happen before freezing in default expressions.) In addition, these rules
 require breaking privateness (the representation items may be on the full type).
 Finally, these rules don't insure implementable behavior: there is no
 requirement for an implementation to select the same representation for similar
@@ -170,7 +170,7 @@
 @xbullet<Neither the target type nor the operand 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 the operand type shall not have
-a tagged, private, limited, or volatile subcomponent.>
+a tagged, private, or volatile subcomponent.>
 
 !ACATS test
 
@@ -3345,6 +3345,34 @@
 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.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Friday, May 24, 2002  8:30 PM
+
+At the Cupertino meeting, the wording was changed significantly to make it more
+readable. Here an excerpt of the minutes of that meeting:
+
+Tucker suggests moving the common ancestor wording to 4.6(9), and factoring it
+out of the following bullets.
+
+After further discussion, Randy completes the wording during a break. Later in
+the meeting, the following wording is proposed to replace 4.9(9-12.1):
+
+"If the target type is an array type, then the operand type shall be an array
+type. The target type and operation type shall have a common ancestor, or:
+The types shall have the same dimensionality; and
+Corresponding index types shall be convertible; and
+The component subtypes shall statically match; and
+Neither the target type nor the operand type shall be limited; and
+In a view conversion: the target type and the operand type shall both or
+neither have aliased components; and the operand type shall not have a tagged,
+private, limited, or volatile subcomponent."
+
+Recently, Tucker has pointed out that the "limited" in the last bullet is
+redundant (since we've already said that the types are not limited). That
+change has now been made.
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent