From 262229e1e61c5130c7d5f1b4fa4e77ff60c9bc86 Mon Sep 17 00:00:00 2001 From: Steve Baird Date: Tue, 14 Nov 2023 14:34:47 -0800 Subject: [PATCH] ada: Support Put_Image for types in user-defined instances of predefined generics. 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/ada/exp_put_image.adb b/gcc/ada/exp_put_image.adb index 6684d4178e6b..a30f609cfacc 100644 --- a/gcc/ada/exp_put_image.adb +++ b/gcc/ada/exp_put_image.adb @@ -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; -- 2.47.2