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.
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;
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