From 089bb078e8663f72292f2edc63f48c304dcb1ccc Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Thu, 6 Jun 2024 11:48:02 +0000 Subject: ada: Bug using user defined string literals with interpolated strings The frontend rejects the use of user defined string literals using interpolated strings. gcc/ada/ * sem_res.adb (Has_Applicable_User_Defined_Literal): Add missing support for interpolated strings. --- gcc/ada/sem_res.adb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc/ada') diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index a0dd1f7..72bba1f 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -467,7 +467,7 @@ package body Sem_Res is Literal_Aspect_Map : constant array (N_Numeric_Or_String_Literal) of Aspect_Id := (N_Integer_Literal => Aspect_Integer_Literal, - N_Interpolated_String_Literal => No_Aspect, + N_Interpolated_String_Literal => Aspect_String_Literal, N_Real_Literal => Aspect_Real_Literal, N_String_Literal => Aspect_String_Literal); @@ -487,6 +487,7 @@ package body Sem_Res is begin if (Nkind (N) in N_Numeric_Or_String_Literal + | N_Interpolated_String_Literal and then Present (Find_Aspect (Typ, Literal_Aspect_Map (Nkind (N))))) or else @@ -563,6 +564,10 @@ package body Sem_Res is Param1 := Make_String_Literal (Loc, Strval (N)); Params := New_List (Param1); + elsif Nkind (N) = N_Interpolated_String_Literal then + Param1 := New_Copy_Tree (N); + Params := New_List (Param1); + else Param1 := Make_String_Literal -- cgit v1.1