]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Improve retrieval of nominal unconstrained type in extended return
authorPiotr Trojanek <trojanek@adacore.com>
Wed, 11 Jun 2025 22:47:38 +0000 (00:47 +0200)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Thu, 3 Jul 2025 08:16:27 +0000 (10:16 +0200)
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.

gcc/ada/sem_ch3.adb

index f25941d72a8379a22816f155fbd78c59bbd58eee..5354d82bd7da714ccee7a8263f0c9b4016050d21 100644 (file)
@@ -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;