AI22-0008-1

!standard 4.3.3(14.1/5)          22-02-03 AI22-0008-1/03

!class binding interpretation 21-11-11

!status Amendment 1-2022 22-02-03

!status WG9 Approved 22-10-18

!status ARG Approved 16-0-0 22-02-03

!status work item 21-11-11

!status received 21-11-09

!submitter Jeff Cousins

!priority Low

!difficulty Easy

!qualifier Clarification

!subject Nominal subtype of a delta aggregate

!summary

We talk about an applicable index constraint rather than a nominal subtype for a delta aggregate. Specifically, the base expression of a delta aggregate has the same applicable index constraint as the delta aggregate as a whole.

!issue

4.3.3(14.1/5) says

For the base_expression of a delta_aggregate, if the nominal subtype of the delta_aggregate is a constrained array subtype, the applicable index constraint is the constraint of the subtype;

Does a delta aggregate have a nominal subtype? (No.)

!recommendation

(See Summary.)

!wording

Modify 4.3.3(14.1/5):

For the base_expression of a delta_aggregate[, if the nominal subtype of the delta_aggregate is a constrained array subtype], the applicable index constraint is [the constraint of the subtype] {that of the delta_aggregate as a whole, if any};

!discussion

Aggregates generally don't have nominal subtypes, so this bullet is reworded to avoid using that term.

!corrigendum 4.3.3(14.1/5)

@drepl
@xbullet{For the @i{base_}@fa{expression} of a @fa{delta_aggregate}, if the
nominal subtype of the @fa{delta_aggregate} is a constrained array subtype,
the applicable index constraint is the constraint of the subtype;}
@dby
@xbullet{For the @i{base_}@fa{expression} of a @fa{delta_aggregate},
the applicable index constraint is that of the @fa{delta_aggregate}
as a whole, if any;}

!ACATS test

This rewording shouldn't change the needed ACATS test for this bullet.

!appendix

[Editor's note: From a private thread with many more topics in each message;

only the relevant part is given here.]

From: Jeff Cousins

Sent: Tuesday, November 9, 2021 3:16 AM

4.3.3(14.1/5) – the item being written to can have a nominal subtype, and

maybe the item used as the base expression, but can the delta aggregate

itself?

****************************************************************

From: Tucker Taft

Sent: Tuesday, November 9, 2021 9:18 AM

Not sure what you are asking here...

****************************************************************

From: Jeff Cousins

Sent: Tuesday, November 9, 2021 11:53 AM

4.3.3 (14.1/5) says “... if the nominal subtype of the delta_aggregate ...”

What is the nominal subtype of a delta aggregate? Taking the example from

4.3.4 (27/5), where in the following is a subtype named (other than Integer)?

((0 => 1.0, 1 => 2.0, 2 => 3.0)

      with delta Integer(Random * 2.0) => 14.2)

****************************************************************

From: Tucker Taft

Sent: Tuesday, November 9, 2021 12:53 PM

This looks like a bug in the wording. Aggregates generally don't have

"nominal" subtypes. They are one of the few things that don't.

4.3.3(14.1/5) should probably say:

For the base_expression of a delta_aggregate[, if the nominal subtype of

the delta_aggregate is a constrained array subtype], the applicable index

constraint is [the constraint of the subtype] {that of the delta_aggregate

as a whole, if any};

****************************************************************