]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Avoid non-serious errors masking fatal errors
authorViljar Indus <indus@adacore.com>
Tue, 11 Nov 2025 12:57:34 +0000 (14:57 +0200)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 21 Nov 2025 08:29:37 +0000 (09:29 +0100)
Is_Redundant_Error_Message is used to filter diagnostic messages
that would appear on the same line to avoid the noise comming from
cascading error messages. However we still want to trigger an error
even if the line already had a warning or a non-serious error at the
same location so that we now that a fatal error has occured and the
compiler knows how to exit correctly in that scenario.

gcc/ada/ChangeLog:

* erroutc.adb (Is_Redundant_Error_Message): Avoid non-serious errors
masking fatal errors.

gcc/ada/erroutc.adb

index bbbe245cefdebd085b0d97172baabc886bc4cd8f..bbc41c733dc2a20a988baa51086ea3d5206ba55e 100644 (file)
@@ -461,15 +461,16 @@ package body Erroutc is
 
         and then not Errors.Table (Cur_Msg).Msg_Cont
 
-        --  Don't delete if prev msg is warning and new msg is an error.
-        --  This is because we don't want a real error masked by a
-        --  warning. In all other cases (that is parse errors for the
-        --  same line that are not unconditional) we do delete the
-        --  message. This helps to avoid junk extra messages from
-        --  cascaded parsing errors
-
-        and then (Errors.Table (Prev_Msg).Kind not in Warning | Style
-                  or else Errors.Table (Cur_Msg).Kind in Warning | Style);
+        --  Don't delete if prev msg is warning or a non-serious-error and new
+        --  msg is an error. This is because we don't want a real error masked
+        --  by a warning. In all other cases (that is parse errors for the same
+        --  line that are not unconditional) we do delete the message. This
+        --  helps to avoid junk extra messages from cascaded parsing errors.
+
+        and then (Errors.Table (Prev_Msg).Kind
+                  not in Warning | Style | Non_Serious_Error
+                  or else Errors.Table (Cur_Msg).Kind
+                          in Warning | Style | Non_Serious_Error);
    end Is_Redundant_Error_Message;
 
    --------------------