CVS difference for ai22s/ai22-0006-1.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai22s/ai22-0006-1.txt

--- ai22s/ai22-0006-1.txt	2021/11/19 07:42:35	1.2
+++ ai22s/ai22-0006-1.txt	2022/01/28 07:06:50	1.3
@@ -1,7 +1,8 @@
-!standard 4.3.3(20.3/5)                                    21-11-18  AI22-0006-1/02
+!standard 4.3.3(20.3/5)                                    22-01-14  AI22-0006-1/03
 !standard 4.3.3(20.4/5)
 !standard 4.3.3(32/5)
 !class binding interpretation 21-11-11
+!status Corrigendum 1-2022 22-01-14
 !status ARG Approved 12-0-0  21-11-18
 !status work item 21-11-11
 !status received 21-11-11
@@ -149,6 +150,64 @@
 it is intended that an implementation can omit the first pass and use
 the applicable index constraint instead to determine the value of the
 first count. It would be nice to see this point stated more explicitly.
+
+!corrigendum 4.3.3(20.3/5)
+
+@drepl
+@xhang<@xterms<1.>Each @fa<iterator_specification> is elaborated (in an 
+arbitrary order) and an iteration is performed solely to determine a maximum
+count for the number of values produced by the iteration; all of these counts are
+combined to determine the overall length of the array, and
+ultimately the limits on the bounds of the array (defined below);>
+@dby
+@xhang<@xterms<1.>Each @fa<iterator_specification> is elaborated (in an 
+arbitrary order) and an iteration is performed solely to determine a count for
+the number of values conditionally produced by the iteration; all of these
+counts are combined to determine the overall length of the array, and
+ultimately the bounds of the array (defined below);>
+
+!corrigendum 4.3.3(20.4/5)
+
+@drepl
+@xhang<@xterms<2.>A second iteration is performed for each of the 
+@fa<iterator_specification>s, in the order given in the @fa<aggregate>, and 
+for each value conditionally produced by the iteration (see 5.5 and 5.5.2),
+the associated @fa<expression> is evaluated, its 
+value is converted to the component subtype of the array type, and used to 
+define the value of the next component of the array starting at the low bound
+and proceeding sequentially toward the high bound. A check is made
+that the second iteration results in an array length no greater than the 
+maximum determined by the first iteration; Constraint_Error is raised if this 
+check fails.>
+@dby
+@xhang<@xterms<2.>A second iteration is performed for each of the 
+@fa<iterator_specification>s, in the order given in the @fa<aggregate>, and 
+for each value conditionally produced by the iteration (see 5.5 and 5.5.2),
+the associated @fa<expression> is evaluated, its 
+value is converted to the component subtype of the array type, and used to 
+define the value of the next component of the array starting at the low bound
+and proceeding sequentially toward the high bound. As part of this second 
+iteration, a check is made that it results in the same number of elements as
+the first iteration; Constraint_Error is raised if this check fails. This 
+check is performed before any attempt to access any nonexistent element of
+the array object.>
+
+!corrigendum 4.3.3(32)
+
+@drepl
+When evaluating @fa<iterated_component_association>s for an 
+@fa<array_aggregate> that contains only @fa<iterated_component_association>s 
+with @fa<iterator_specification>s, the first step of evaluating an
+@fa<iterated_component_association> can be omitted if the implementation can
+determine the maximum number of values by some other means.
+@dby
+When evaluating @fa<iterated_component_association>s for an 
+@fa<array_aggregate> that contains only @fa<iterated_component_association>s 
+with @fa<iterator_specification>s, the first step of evaluating an
+@fa<iterated_component_association> can be omitted if the implementation can
+determine the maximum number of values by some other means.
+Such "other means" might include making use of an applicable index constraint
+or the Length function of a suitable container type.
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent