ada: Put_Image aspect spec incorrectly not inherited
authorSteve Baird <baird@adacore.com>
Tue, 11 Oct 2022 22:21:39 +0000 (15:21 -0700)
committerMarc Poulhiès <poulhies@adacore.com>
Mon, 7 Nov 2022 08:36:31 +0000 (09:36 +0100)
In some cases, a Put_Image aspect specification for a scalar type was not
correctly inherited by a descendant of that type.

gcc/ada/

* exp_put_image.adb
(Image_Should_Call_Put_Image): Correctly handle the case of an
inherited Put_Image aspect specification for a scalar type.

gcc/ada/exp_put_image.adb

index 50e0569..c489ad4 100644 (file)
@@ -1039,13 +1039,13 @@ package body Exp_Put_Image is
       end if;
 
       --  In Ada 2022, T'Image calls T'Put_Image if there is an explicit
-      --  aspect_specification for Put_Image, or if U_Type'Image is illegal
-      --  in pre-2022 versions of Ada.
+      --  (or inherited) aspect_specification for Put_Image, or if
+      --  U_Type'Image is illegal in pre-2022 versions of Ada.
 
       declare
          U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N)));
       begin
-         if Present (TSS (U_Type, TSS_Put_Image)) then
+         if Present (Find_Aspect (U_Type, Aspect_Put_Image)) then
             return True;
          end if;