]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Error about assignment to limited target on aggregate with "for of" iterator
authorGary Dismukes <dismukes@adacore.com>
Sat, 18 Jan 2025 01:11:12 +0000 (01:11 +0000)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Thu, 5 Jun 2025 08:18:35 +0000 (10:18 +0200)
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.

gcc/ada/exp_aggr.adb

index 7cb26ce1af51bf9a99f546b0d11cafd422e30b41..3c4576df3b83306890dd195206ee8e6b07dfb56e 100644 (file)
@@ -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),