From: Ghjuvan Lacambre Date: Fri, 26 May 2023 11:26:21 +0000 (+0200) Subject: ada: Fix -fdiagnostics-format=json not printing all messages X-Git-Tag: basepoints/gcc-15~8172 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3404e481d09d49311ef74a8de15d8a72ed240cce;p=thirdparty%2Fgcc.git ada: Fix -fdiagnostics-format=json not printing all messages The previous version of this code stopped printing messages as soon as it encountered a deleted or continuation message. This was wrong, continuation and deleted messages can be followed by live messages that do need to be printed. gcc/ada/ * errout.adb (Output_Messages): Fix loop termination condition. --- diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index 1c6222b3a294..6e378a607315 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -3062,16 +3062,19 @@ package body Errout is E := Errors.Table (E).Next; - -- Skip deleted messages. - -- Also skip continuation messages, as they have already been - -- printed along the message they're attached to. + while E /= No_Error_Msg loop + + -- Skip deleted messages. + -- Also skip continuation messages, as they have already been + -- printed along the message they're attached to. + + if not Errors.Table (E).Deleted + and then not Errors.Table (E).Msg_Cont + then + Write_Char (','); + Output_JSON_Message (E); + end if; - while E /= No_Error_Msg - and then not Errors.Table (E).Deleted - and then not Errors.Table (E).Msg_Cont - loop - Write_Char (','); - Output_JSON_Message (E); E := Errors.Table (E).Next; end loop; end if;