CVS difference for ai12s/ai12-0097-1.txt
--- ai12s/ai12-0097-1.txt 2014/02/13 05:27:47 1.1
+++ ai12s/ai12-0097-1.txt 2014/07/16 03:02:06 1.2
@@ -1,5 +1,7 @@
-!standard 6.5(8/3) 14-02-12 AI05-0097-1/01
+!standard 6.5(8/3) 14-07-15 AI05-0097-1/02
!class binding interpretation 14-02-12
+!status Corrigendum 2015 14-07-15
+!status ARG Approved 7-0-0 14-06-28
!status work item 14-02-12
!status received 14-01-29
!priority Low
@@ -9,10 +11,10 @@
!summary
The tag of a return object is that of the return type if that is specific.
-Otherwise, it is that the return expression of a simple return statement,
+Otherwise, it is that of the return expression of a simple return statement,
or the initializing expression of an extended return statement, unless
-that statement has a subtype_indication of a specific type, then the
-tag of that type is used.
+that return statement has a subtype_indication of a specific type, in which
+case the tag of that type is used.
!question
@@ -55,7 +57,7 @@
AARM To Be Honest: The expression here is the return expression if the return
statement is a simple_return_statement, and the initializing expression
-of teh extended_return_object_declaration if the return statement is an
+of the extended_return_object_declaration if the return statement is an
extended_return_statement (ignoring any inner simple_return_statements, which
necessarily cannot have an expression, and any other expressions inside of the
extended_return_statement).
@@ -71,6 +73,28 @@
in this wording, so there is no confusion about which subtype_indication we're
talking about -- the current syntax of an extended_return_statement doesn't
directly include any subtype_indication.
+
+!corrigendum 6.5(8/3)
+
+@drepl
+If the result type of a function is a specific
+tagged type, the tag of the return object is that
+of the result type. If the result type is class-wide, the tag of the
+return object is that of the type of the @fa<subtype_indication>
+if it is specific, or otherwise that of the value of the @fa<expression>. A
+check is made that the master of the type identified by the tag of the result
+includes the elaboration of the master that elaborated the function body. If
+this check fails, Program_Error is raised.
+@dby
+If the result type of a function is a specific tagged type, the tag of the
+return object is that of the result type. If the result type is class-wide,
+the tag of the return object is that of the value of the @fa<expression>,
+unless the return object is defined by an @fa<extended_return_object_declaration>
+with a @fa<subtype_indication> that is specific, in which case it is that of
+the type of the @fa<subtype_indication>. A check is made that the master of
+the type identified by the tag of the result includes the elaboration of the
+master that elaborated the function body. If this check fails, Program_Error
+is raised.
!ASIS
Questions? Ask the ACAA Technical Agent