[COMMITTED] ada: Support Put_Image for types in user-defined instances of predefined generics.
Checks
Commit Message
From: Steve Baird <baird@adacore.com>
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.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/exp_put_image.adb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -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;