From: Piotr Trojanek <troja...@adacore.com> To reliably retrieve the nominal unconstrained type of object declared in extended return statement we need to rely on the Original_Node.
gcc/ada/ChangeLog: * sem_ch3.adb (Check_Return_Subtype_Indication): Use Original_Node. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch3.adb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index f25941d72a8..5354d82bd7d 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -4204,11 +4204,7 @@ package body Sem_Ch3 is -- to recover the nominal unconstrained type. if Is_Constr_Subt_For_U_Nominal (Obj_Typ) then - if Nkind (Object_Definition (Obj_Decl)) = N_Subtype_Indication then - Obj_Typ := Entity (Subtype_Mark (Object_Definition (Obj_Decl))); - else - Obj_Typ := Etype (Obj_Typ); - end if; + Obj_Typ := Entity (Original_Node (Object_Definition (Obj_Decl))); pragma Assert (not Is_Constrained (Obj_Typ)); end if; -- 2.43.0