From: Piotr Trojanek Date: Wed, 27 Jul 2022 07:37:05 +0000 (+0200) Subject: [Ada] Create internal type for null array aggregate as an itype X-Git-Tag: basepoints/gcc-14~4783 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66d4ff2658fc2d5115092da29249191feac75308;p=thirdparty%2Fgcc.git [Ada] Create internal type for null array aggregate as an itype Internal type created for the null array aggregate of Ada 2022 was created as a temporary entity and then flagged as internal, but it is better to create this type directly as an itype. In particular, when the null array aggregate appears in a spec expression, its type declaration will not be attached to the AST. An itype will have Associated_Node_For_Itype, so that the context of the type can be recovered, which is what GNATprove does. gcc/ada/ * sem_aggr.adb (Resolve_Null_Array_Aggregate): Create internal type for the aggregate as an itype. --- diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index 8f20b3ac6fb4..c9c0a76ca48d 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -4088,7 +4088,10 @@ package body Sem_Aggr is Index : Node_Id; Lo, Hi : Node_Id; Constr : constant List_Id := New_List; - Subt : constant Entity_Id := Make_Temporary (Loc, 'S'); + Subt : constant Entity_Id := + Create_Itype (Ekind => E_Array_Subtype, + Related_Nod => N, + Suffix => 'S'); begin -- Create a constrained subtype with null dimensions @@ -4134,7 +4137,6 @@ package body Sem_Aggr is Make_Index_Or_Discriminant_Constraint (Loc, Constr))); Insert_Action (N, Decl); - Set_Is_Internal (Subt); Analyze (Decl); Set_Etype (N, Subt); Set_Compile_Time_Known_Aggregate (N);