CVS difference for ais/ai-00251.txt

Differences between 1.27 and version 1.28
Log of other versions for file ais/ai-00251.txt

--- ais/ai-00251.txt	2004/11/14 06:36:57	1.27
+++ ais/ai-00251.txt	2005/01/07 03:07:32	1.28
@@ -1,4 +1,4 @@
-!standard 03.04    (02)                            04-11-02   AI95-00251/16
+!standard 03.04    (02)                            04-12-29   AI95-00251/18
 !standard 02.09    (02)
 !standard 03.02.01 (02)
 !standard 03.04    (03)
@@ -406,6 +406,9 @@
 
     Delete the paragraphs 21-24 (they're included above).
 
+    [Editor's note: A somewhat different order of changes is used in the
+    Amendment document, as we can't change formatting with our tools. The
+    net effect is the same, however.]
 
 7.3 Private Types and Private Extensions
 
@@ -534,8 +537,8 @@
 
     Add after paragraph 15:
 
-        The actual type shall be a descendant of every ancestor of
-        the formal type.
+        The actual type for a generic formal derived type shall be a descendant
+        of every ancestor of the formal type.
 
 
 12.5.5 Formal Interface Types
@@ -970,7 +973,7 @@
 @drepl
 @xcode<@fa<derived_type_definition ::= [>@ft<@b<abstract>>@fa<] >@ft<@b<new> @i<parent_>>@fa<subtype_indication [record_extension_part]>>
 @dby
-@xcode<@fa<interface_list ::= interface_subtype_mark {>@ft<@b<and>>@fa< interface_subtype_mark}>>
+@xcode<@fa<interface_list ::= >@ft<@i<interface_>>@fa<subtype_mark {>@ft<@b<and>>@fa< >@ft<@i<interface_>>@fa<subtype_mark}>>
 
 @xcode<@fa<derived_type_definition ::=
     [>@ft<@b<abstract>>@fa<] >@ft<@b<new> @i<parent_>>@fa<subtype_indication [[>@ft<@b<and>>@fa< interface_list] record_extension_part]>>
@@ -1145,171 +1148,163 @@
 In a view conversion for an untagged type, the target type shall be convertible
 (back) to the operand type.
 
-If there is a type that is an ancestor of both the target type and the operand
-type, then:
-
-@xbullet<The target type shall be untagged; or>
-
-@xbullet<The operand type shall be covered by or descended from the target
-type; or>
-
-@xbullet<The operand type shall be a class-wide type that covers the target
-type; or>
-
-@xbullet<The operand and target types shall both be class-wide types and the
-specific type associated with at least one of them shall be an interface type.>
-
-If there is no type that is an ancestor of both the target type
-and the operand type, then:
-
-@xbullet<If the target type is a numeric type, then the operand type shall be a
-numeric type.>
-
 !corrigendum 4.6(9)
 
-@drepl
+@ddel
 If the target type is an array type, then the operand type shall be an array
 type. Further:
-@dby
-@xbullet<If the target type is an array type, then the operand type shall be an array
-type. Further:>
 
 !corrigendum 4.6(10)
 
-@drepl
+@ddel
 @xbullet<The types shall have the same dimensionality;>
-@dby
-@xinbull<The types shall have the same dimensionality;>
 
 !corrigendum 4.6(11/1)
 
-@drepl
+@ddel
 @xbullet<Corresponding index types shall be convertible;>
-@dby
-@xinbull<Corresponding index types shall be convertible;>
 
 !corrigendum 4.6(12/1)
 
-@drepl
+@ddel
 @xbullet<The component subtypes shall statically match; and>
-@dby
-@xinbull<The component subtypes shall statically match; and>
 
 !corrigendum 4.6(12.1/1)
 
-@drepl
+@ddel
 @xbullet<In a view conversion, the target type and the operand type shall both
 or neither have aliased components.>
-@dby
-@xinbull<In a view conversion, the target type and the operand type shall both
-or neither have aliased components.>
 
 !corrigendum 4.6(13)
 
-@drepl
+@ddel
 If the target type is a general access type, then the operand type shall be an
 access-to-object type. Further:
-@dby
-@xbullet<If the target type is a general access type, then the operand type
-shall be an access-to-object type. Further:>
 
 !corrigendum 4.6(14)
 
-@drepl
+@ddel
 @xbullet<If the target type is an access-to-variable type, then the operand
 type shall be an access-to-variable type;>
-@dby
-@xinbull<If the target type is an access-to-variable type, then the operand
-type shall be an access-to-variable type;>
 
 !corrigendum 4.6(15)
 
-@drepl
+@ddel
 @xbullet<If the target designated type is tagged, then the operand designated
 type shall be convertible to the target designated type;>
-@dby
-@xinbull<If the target designated type is tagged, then the operand designated
-type shall be convertible to the target designated type;>
 
 !corrigendum 4.6(16)
 
-@drepl
+@ddel
 @xbullet<If the target designated type is not tagged, then the designated types
 shall be the same, and either the designated subtypes shall statically match or
 the target designated subtype shall be discriminated and unconstrained; and>
-@dby
-@xinbull<If the target designated type is not tagged, then the designated types
-shall be the same, and either the designated subtypes shall statically match or
-the target designated subtype shall be discriminated and unconstrained; and>
 
 !corrigendum 4.6(17)
 
-@drepl
+@ddel
 @xbullet<The accessibility level of the operand type shall not be statically
 deeper than that of the target type. In addition to the places where Legality
 Rules normally apply (see 12.3), this rule applies also in the private part of
 an instance of a generic unit.>
-@dby
-@xinbull<The accessibility level of the operand type shall not be statically
-deeper than that of the target type. In addition to the places where Legality
-Rules normally apply (see 12.3), this rule applies also in the private part of
-an instance of a generic unit.>
 
 !corrigendum 4.6(18)
 
-@drepl
+@ddel
 If the target type is an access-to-subprogram type, then the operand
 type shall be an access-to-subprogram type. Further:
-@dby
-@xbullet<If the target type is an access-to-subprogram type, then the operand
-type shall be an access-to-subprogram type. Further:>
 
 !corrigendum 4.6(19)
 
-@drepl
+@ddel
 @xbullet<The designated profiles shall be subtype-conformant.>
-@dby
-@xinbull<The designated profiles shall be subtype-conformant.>
 
 !corrigendum 4.6(20)
 
-@drepl
+@ddel
 @xbullet<The accessibility level of the operand type shall not be statically
 deeper than that of the target type. In addition to the places where Legality
 Rules normally apply (see 12.3), this rule applies also in the private part of
 an instance of a generic unit. If the operand type is declared within a generic
 body, the target type shall be declared within the generic body.>
-@dby
-@xinbull<The accessibility level of the operand type shall not be statically
-deeper than that of the target type. In addition to the places where Legality
-Rules normally apply (see 12.3), this rule applies also in the private part of
-an instance of a generic unit. If the operand type is declared within a generic
-body, the target type shall be declared within the generic body.>
 
 !corrigendum 4.6(21)
 
-@ddel
+@drepl
 If the target type is not included in any of the above four cases, there shall
 be a type that is an ancestor of both the target type and the operand type.
 Further, if the target type is tagged, then either:
+@dby
+If there is a type that is an ancestor of both the target type and the operand
+type, then:
 
-!corrigendum 4.6(22)
+@xbullet<The target type shall be untagged; or>
 
-@ddel
-@xbullet<The operand type shall be covered by or descended from the target
-type; or>
 
 !corrigendum 4.6(23)
 
-@ddel
+@drepl
 @xbullet<The operand type shall be a class-wide type that covers the target
 type.>
+@dby
+@xbullet<The operand type shall be a class-wide type that covers the target
+type; or>
 
+@xbullet<The operand and target types shall both be class-wide types and the
+specific type associated with at least one of them shall be an interface type.>
+
 !corrigendum 4.6(24)
 
-@ddel
+@drepl
 In a view conversion for an untagged type, the target type shall be convertible
 (back) to the operand type.
+@dby
+If there is no type that is an ancestor of both the target type
+and the operand type, then:
+
+@xbullet<If the target type is a numeric type, then the operand type shall be a
+numeric type.>
+
+@xbullet<If the target type is an array type, then the operand type shall be an array
+type. Further:>
+
+@xinbull<The types shall have the same dimensionality;>
+
+@xinbull<Corresponding index types shall be convertible;>
+
+@xinbull<The component subtypes shall statically match; and>
+
+@xinbull<In a view conversion, the target type and the operand type shall both
+or neither have aliased components.>
+
+@xbullet<If the target type is a general access type, then the operand type
+shall be an access-to-object type. Further:>
+
+@xinbull<If the target type is an access-to-variable type, then the operand
+type shall be an access-to-variable type;>
+
+@xinbull<If the target designated type is tagged, then the operand designated
+type shall be convertible to the target designated type;>
+
+@xinbull<If the target designated type is not tagged, then the designated types
+shall be the same, and either the designated subtypes shall statically match or
+the target designated subtype shall be discriminated and unconstrained; and>
+
+@xinbull<The accessibility level of the operand type shall not be statically
+deeper than that of the target type. In addition to the places where Legality
+Rules normally apply (see 12.3), this rule applies also in the private part of
+an instance of a generic unit.>
+
+@xbullet<If the target type is an access-to-subprogram type, then the operand
+type shall be an access-to-subprogram type. Further:>
+
+@xinbull<The designated profiles shall be subtype-conformant.>
+
+@xinbull<The accessibility level of the operand type shall not be statically
+deeper than that of the target type. In addition to the places where Legality
+Rules normally apply (see 12.3), this rule applies also in the private part of
+an instance of a generic unit. If the operand type is declared within a generic
+body, the target type shall be declared within the generic body.>
 
 !corrigendum 7.3(02)
 
@@ -1420,7 +1415,8 @@
 For a generic formal type with an @fa<unknown_discriminant_part>, the actual
 may, but need not, have discriminants, and may be definite or indefinite.
 @dinst
-The actual type shall be a descendant of every ancestor of the formal type.
+The actual type for a generic formal derived type shall be a descendant of
+every ancestor of the formal type.
 
 !corrigendum 12.5.5(01)
 

Questions? Ask the ACAA Technical Agent