From: Gary Dismukes <dismu...@adacore.com>

The compiler reports a spurious error about an assignment to a limited
object on an aggregate of a array type with limited components that has
an association with a "for of" iterator. This is fixed by arranging to
have the Assignment_OK flag set on the indexed_names generated by the
expander for initializing the aggregate object.

gcc/ada/ChangeLog:

        * exp_aggr.adb (Two_Pass_Aggregate_Expansion): Change call to 
Make_Assignment
        for the indexed aggregate object to call Change_Make_OK_Assignment 
instead.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/exp_aggr.adb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 7cb26ce1af5..3c4576df3b8 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -5749,7 +5749,7 @@ package body Exp_Aggr is
          while Present (Assoc) loop
             Iter := Iterator_Specification (Assoc);
             Iter_Id := Defining_Identifier (Iter);
-            New_Comp := Make_Assignment_Statement (Loc,
+            New_Comp := Make_OK_Assignment_Statement (Loc,
                Name =>
                  Make_Indexed_Component (Loc,
                     Prefix => New_Occurrence_Of (TmpE, Loc),
-- 
2.43.0

Reply via email to