CVS difference for ais/ai-00263.txt
--- ais/ai-00263.txt 2001/06/02 04:13:15 1.5
+++ ais/ai-00263.txt 2002/10/29 20:24:57 1.6
@@ -1,5 +1,7 @@
-!standard 4.09 (29) 01-02-23 AI95-00263/01
+!standard 4.09 (29) 02-10-25 AI95-00263/02
!class binding interpretation 01-02-22
+!status Amendment 200Y 02-10-25
+!status ARG approved 10-0-0 02-10-12
!status work item 01-02-22
!status received 01-02-22
!qualifier Omission
@@ -78,7 +80,30 @@
value in all instances. 4.9(26) ensures that by declaring that descendants of
formal scalar types are not static. However, this rule does not cover
formal derived types that happen to be scalar. This was a clear oversight.
+Thus, "formal scalar type" is changed to "formal type" in 4.9(26).
+Similarly, we need to answer the analogous question for static string subtypes.
+The two cases of a formal array type and a formal derived array type ought to
+be treated consistently. For example, either both or neither of the following
+two named number declarations should be legal:
+
+ type T is array (Character) of Character;
+
+ generic
+ type Ft1 is array (Character) of Character;
+ type Ft2 is new T;
+ package G is
+ Length_1 : constant := Ft1'Length;
+ Length_2 : constant := Ft2'Length;
+ end G;
+
+The matching rules for generic actual types (12.5.1(8), 12.5.3(6)) ensure that
+the First, Last, and Length attributes of the actual subtypes would match those
+of the formal. Therefore, there is no problem in allowing both of the above
+number declarations -- they must have the same values in every instantiation.
+Thus, "(and whose type is not a descendant of a formal array type)" is removed
+from 4.9(26).
+
!corrigendum 4.9(26)
@drepl
@@ -98,11 +123,10 @@
whose type is not a descendant of a formal type, or a constrained
scalar subtype formed by imposing a compatible static constraint on a static
scalar subtype. A static string subtype is an unconstrained string subtype
-whose index subtype and component subtype are static (and whose type is not a
-descendant of a formal array type), or a constrained string subtype formed by
-imposing a compatible static constraint on a static string subtype. In any
-case, the subtype of a generic formal object of mode @b<in out>, and the result
-subtype of a generic formal function, are not static.
+whose index subtype and component subtype are static, or a constrained string
+subtype formed by imposing a compatible static constraint on a static string
+subtype. In any case, the subtype of a generic formal object of mode @b<in
+out>, and the result subtype of a generic formal function, are not static.
!ACATS test
Questions? Ask the ACAA Technical Agent