[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.
This commit is contained in:
Etienne Servais 2022-02-21 16:32:46 +01:00 committed by Pierre-Marie de Rodat
parent c21a0097b6
commit 27b2b83bd7

View file

@ -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