From: Yannick Moy Date: Tue, 20 Oct 2020 10:53:08 +0000 (+0200) Subject: [Ada] Issue advice for error regarding Old/Loop_Entry on unevaluated expr. X-Git-Tag: basepoints/gcc-12~2854 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96ccfec0296a20558942e034b9b7e64573b8b56a;p=thirdparty%2Fgcc.git [Ada] Issue advice for error regarding Old/Loop_Entry on unevaluated expr. gcc/ada/ * sem_attr.adb (Analyze_Attribute): Issue a continuation message to give proper recommendation here. --- diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 42e984405cad..18b4eeab27e5 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -420,9 +420,11 @@ package body Sem_Attr is -- no arguments is used when the caller has already generated the -- required error messages. - procedure Error_Attr_P (Msg : String); + procedure Error_Attr_P (Msg : String; Msg_Cont : String := ""); pragma No_Return (Error_Attr_P); - -- Like Error_Attr, but error is posted at the start of the prefix + -- Like Error_Attr, but error is posted at the start of the prefix. The + -- second message Msg_Cont is useful to issue a continuation message + -- before raising Bad_Attribute. procedure Legal_Formal_Attribute; -- Common processing for attributes Definite and Has_Discriminants. @@ -2690,10 +2692,13 @@ package body Sem_Attr is -- Error_Attr_P -- ------------------ - procedure Error_Attr_P (Msg : String) is + procedure Error_Attr_P (Msg : String; Msg_Cont : String := "") is begin Error_Msg_Name_1 := Aname; Error_Msg_F (Msg, P); + if Msg_Cont /= "" then + Error_Msg_F (Msg_Cont, P); + end if; Error_Attr; end Error_Attr_P; @@ -2842,7 +2847,10 @@ package body Sem_Attr is and then Attr_Id = Attribute_Old then " or be eligible for conditional evaluation" & " (RM 6.1.1 (27))" - else "")); + else ""), + Msg_Cont => + "\using pragma Unevaluated_Use_Of_Old (Allow) will make " + & "this legal"); when 'W' => Error_Msg_Name_1 := Aname;