]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Compiler crash on ill-formed container indexing
authorGary Dismukes <dismukes@adacore.com>
Fri, 5 Dec 2025 01:00:19 +0000 (01:00 +0000)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 9 Jan 2026 10:57:16 +0000 (11:57 +0100)
The compiler blows up when analyzing an illegal indexing of a container
object (such as a vector) when the indexing expression has the form of
a named actual parameter and the name given for the parameter does not
match the name of the index formal of the corresponding indexing function
that the compiler identifies for doing the generalized indexing.

gcc/ada/ChangeLog:

* sem_ch4.adb (Try_Container_Indexing): Conditionalize last actual of
call to Error_Msg_NE to avoid blowup on N_Parameter_Association actuals.

gcc/ada/sem_ch4.adb

index ad560ee397929d46dc2b1cae63804847fa68703d..38e013a9dc4afa6acefd2c29f7a88701df855b2b 100644 (file)
@@ -9564,7 +9564,12 @@ package body Sem_Ch4 is
 
       if Idx_Type = Any_Type then
          Error_Msg_NE
-           ("container cannot be indexed with&", N, Etype (First (Exprs)));
+           ("container cannot be indexed with&", N,
+            (if Nkind (First (Exprs)) = N_Parameter_Association
+             then
+                Etype (Explicit_Actual_Parameter (First (Exprs)))
+             else
+                Etype (First (Exprs))));
          Rewrite (N, New_Occurrence_Of (Any_Id, Loc));
       end if;