]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Support Put_Image for types in user-defined instances of predefined generics.
authorSteve Baird <baird@adacore.com>
Tue, 14 Nov 2023 22:34:47 +0000 (14:34 -0800)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 30 Nov 2023 10:12:49 +0000 (11:12 +0100)
Predefined units do not generally support the Put_Image attribute.
There are good reasons for this in most cases. But if a user-defined
instantiation of a predefined generic occurs in Ada 2022 code, then
Put_Image can be supported for types declared therein. Add this support.

gcc/ada/

* exp_put_image.adb (Put_Image_Enabled): Return True in more
cases. In particular, when testing to see if a type occurs in a
predefined unit, test the type's code unit
(obtained by calling Get_Code_Unit). In the case of type within a
user-defined instance of a predefined generic, Is_Predefined_Unit
will return True for the type and False for the type's code unit.

gcc/ada/exp_put_image.adb

index 6684d4178e6b3913438456aea89b57cfabab1f82..a30f609cfacc307244c983ffbebaba25dad3b2ed 100644 (file)
@@ -1023,7 +1023,7 @@ package body Exp_Put_Image is
             null;
          elsif Is_Derived_Type (Typ) then
             return Put_Image_Enabled (Etype (Base_Type (Typ)));
-         elsif In_Predefined_Unit (Typ) then
+         elsif Is_Predefined_Unit (Get_Code_Unit (Typ)) then
             return False;
          end if;
       end if;