From bb60efc5c75afa2c409c740b970f5f1e6fdd4890 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Mon, 7 Dec 2020 19:34:01 -0500 Subject: [PATCH] [Ada] Crash on inherited component in type extension in generic unit. gcc/ada/ * exp_ch3.adb (Expand_Record_Extension): Set Parent_Subtype on the type extension when within a generic unit, even though expansion is disabled, to allow for proper resolution of selected components inherited from an ancestor. --- gcc/ada/exp_ch3.adb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index b916aef2972d..56924a0460c2 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -7782,9 +7782,14 @@ package body Exp_Ch3 is -- Expand_Record_Extension is called directly from the semantics, so -- we must check to see whether expansion is active before proceeding, -- because this affects the visibility of selected components in bodies - -- of instances. + -- of instances. Within a generic we still need to set Parent_Subtype + -- link because the visibility of inherited components will have to be + -- verified in subsequent instances. if not Expander_Active then + if Inside_A_Generic and then Ekind (T) = E_Record_Type then + Set_Parent_Subtype (T, Etype (T)); + end if; return; end if; -- 2.47.2