CVS difference for ai12s/ai12-0377-1.txt
--- ai12s/ai12-0377-1.txt 2020/06/17 00:20:22 1.8
+++ ai12s/ai12-0377-1.txt 2020/07/09 07:15:40 1.9
@@ -1,8 +1,11 @@
-!standard 6.4.1(5.1/4) 20-06-15 AI12-0377-1/03
+!standard 6.4.1(5.1/4) 20-07-07 AI12-0377-1/04
!standard 6.4.1(5.2/4)
!standard 6.4.1(5.3/4)
+!standard 6.4.1(13.1/4)
!standard 6.4.1(13.2/4)
!standard 6.4.1(13.3/4)
+!standard 6.4.1(13.4/4)
+!standard 6.4.1(15/3)
!class binding interpretation 20-06-13
!status Amendment 1-2012 20-06-15
!status ARG Approved 13-0-0 20-06-13
@@ -72,7 +75,8 @@
type) that is an ancestor of both the target type and the operand type.
[Editor's note: This removes the access part of this rule, and makes a
-version apply to all view conversions.]
+version apply to all view conversions. The access part of the rule is
+addressed in AI12-0378-1.]
Revert 6.4.1(13.1/4) to its previous version, namely:
@@ -114,6 +118,82 @@
the deinitialization noted in the problem worse (since it would clobber the
current value of the object unconditionally, even if it would be in range),
so that is not a viable solution to this problem.
+
+!corrigendum 6.4.1(5.1/4)
+
+@drepl
+If the mode is @b<out>, the actual parameter is a view conversion, and the
+type of the formal parameter is an access type or a scalar type that has
+the Default_Value aspect specified, then
+@dby
+If the mode is @b<out>, the actual parameter is a view conversion, and the
+type of the formal parameter is a scalar type, then
+
+!corrigendum 6.4.1(5.2/4)
+
+@drepl
+@xbullet<there shall exist a type (other than a root numeric type) that is
+an ancestor of both the target type and the operand type; and>
+@dby
+@xbullet<the target and operand type both do not have the Default_Value aspect
+specified; or>
+
+!corrigendum 6.4.1(5.3/4)
+
+@drepl
+@xbullet<in the case of a scalar type, the type of the operand of the
+conversion shall have the Default_Value aspect specified.>
+@dby
+@xbullet<the target and operand type both have the Default_Value aspect
+specified, and there shall exist a type (other than a root numeric
+type) that is an ancestor of both the target type and the operand type.>
+
+!corrigendum 6.4.1(13.1/4)
+
+@drepl
+@xinbull<For a scalar type that has the Default_Value aspect specified,
+the formal parameter is initialized from the value of the actual,
+without checking that the value satisfies any constraint or any
+predicate, except in the following case: if the actual parameter
+is a view conversion and either>
+@dby
+@xinbull<For a scalar type that has the Default_Value aspect specified, the
+formal parameter is initialized from the value of the actual, without checking
+that the value satisfies any constraint or any predicate;>
+
+!corrigendum 6.4.1(13.2/4)
+
+@ddel
+@xi2bull<there exists no type (other than a root numeric type) that
+is an ancestor of both the target type and the type of the
+operand of the conversion; or>
+
+!corrigendum 6.4.1(13.3/4)
+
+@ddel
+@xi2bull<the Default_Value aspect is unspecified for the type of the
+operand of the conversion>
+
+!corrigendum 6.4.1(13.4/4)
+
+@ddel
+@xindent<then Program_Error is raised;>
+
+!corrigendum 6.4.1(15)
+
+@dinsa
+@xinbull<For any other type, the formal parameter is uninitialized. If
+composite, a view conversion of the actual parameter to the nominal
+subtype of the formal is evaluated (which might raise Constraint_Error),
+and the actual subtype of the formal is that of the view conversion. If
+elementary, the actual subtype of the formal is given by its nominal subtype.>
+@dinst
+@xinbull<Furthermore, if the type is a scalar type, and the actual parameter is a
+view conversion, then Program_Error is raised if either the target or
+the operand type has the Default_Value aspect specified, unless they
+both have the Default_Value aspect specified, and there is a type
+(other than a root numeric type) that is an ancestor of both the
+target type and the operand type.>
!ASIS
Questions? Ask the ACAA Technical Agent