From: Etienne Servais Date: Mon, 21 Feb 2022 15:32:46 +0000 (+0100) Subject: [Ada] Take full view of private type X-Git-Tag: basepoints/gcc-14~6673 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27b2b83bd7c1a9dfdba4ef27ea120ae5e1ead0b0;p=thirdparty%2Fgcc.git [Ada] Take full view of private type This allows to resolve the following: type Rec (<>) is private; type Arr (<>) is private; private type Arr is array (Positive range <>) of Natural; type Rec (L : Natural) is record F1 : Integer; F2 : Arr (1 .. L); end record; gcc/ada/ * sem_ch3.adb (Analyze_Subtype_Declaration): Use underlying type of Indic_Typ. (Constrain_Array): Ditto for T. --- diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index d2605f5a308..d41e27122f6 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -5978,7 +5978,7 @@ package body Sem_Ch3 is if Nkind (Subtype_Indication (N)) = N_Subtype_Indication then declare Indic_Typ : constant Entity_Id := - Etype (Subtype_Mark (Subtype_Indication (N))); + Underlying_Type (Etype (Subtype_Mark (Subtype_Indication (N)))); Subt_Index : Node_Id; Target_Index : Node_Id; @@ -13595,6 +13595,8 @@ package body Sem_Ch3 is T := Designated_Type (T); end if; + T := Underlying_Type (T); + -- If an index constraint follows a subtype mark in a subtype indication -- then the type or subtype denoted by the subtype mark must not already -- impose an index constraint. The subtype mark must denote either an