From: Ed Schonberg Date: Tue, 14 Dec 2021 14:44:16 +0000 (+0100) Subject: [Ada] Fix check for looking for user defined literals X-Git-Tag: basepoints/gcc-14~7022 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1231d9a0baab25e0a07b0d6146b91e59ecfadb8;p=thirdparty%2Fgcc.git [Ada] Fix check for looking for user defined literals Recall that Has_Possible_Literal_Aspects only comes in if a given node does not have any visible interpretation. If one operand is a literal we assume that there may be a user-defined literal defined for some type to be determined during the downward pass of resolution, but that depends on the existence of some user-defined function or operator that can take that literal as an actual. If analysis did not find such, the call is illegal. I think that the following must be added to Operator_Check to recover the proper error. Note that this breaks current partial implementation of user-defined literals. gcc/ada/ * sem_ch4.adb (Operator_Check): Fix condition. --- diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 68839b31345..915a7b48eca 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -7260,7 +7260,9 @@ package body Sem_Ch4 is then return; - elsif Has_Possible_Literal_Aspects (N) then + elsif Present (Entity (N)) + and then Has_Possible_Literal_Aspects (N) + then return; -- If we have a logical operator, one of whose operands is