]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Parse the attributes of continuation messages correctly
authorViljar Indus <indus@adacore.com>
Fri, 21 Jun 2024 10:28:40 +0000 (13:28 +0300)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Thu, 29 Aug 2024 13:06:27 +0000 (15:06 +0200)
Currently unless pretty printing is enabled we avoid parsing
the message strings for continuation messages. This leads
to inconsistent state for the Error_Msg_Object-s that are
being created.

gcc/ada/

* erroutc.adb (Prescan_Message): Avoid not parsing all of the
message attributes.
* erroutc.ads: Update the documentation.

gcc/ada/erroutc.adb
gcc/ada/erroutc.ads

index 2ce3505959febf425d91feac35a86b23d37abb57..4e0a9f26e0df5f9580b60cdd764b4e089da2141f 100644 (file)
@@ -922,15 +922,36 @@ package body Erroutc is
    --  Start of processing for Prescan_Message
 
    begin
-      --  Nothing to do for continuation line, unless -gnatdF is set
+      --  Continuation lines need to check only for insertion sequences.
+      --  Other attributes should be inherited from the main message.
+
+      if Msg (Msg'First) = '\' then
+         Has_Insertion_Line := False;
+
+         J := Msg'First;
+
+         --  If we have a quote, don't look at following character
+
+         while J <= Msg'Last loop
+            if Msg (J) = ''' then
+               J := J + 2;
+
+            --  Insertion line (# insertion)
+
+            elsif Msg (J) = '#' then
+               Has_Insertion_Line := True;
+               J := J + 1;
+            else
+               J := J + 1;
+            end if;
+         end loop;
 
-      if not Debug_Flag_FF and then Msg (Msg'First) = '\' then
          return;
 
       --  Some global variables are not set for continuation messages, as they
       --  only make sense for the initial message.
 
-      elsif Msg (Msg'First) /= '\' then
+      else
 
          --  Set initial values of globals (may be changed during scan)
 
index effc667bb5d29d89be022bc196f6bde3a5cabdcc..0a52af5033c2387658d84de14ad7550ea6203002 100644 (file)
@@ -555,8 +555,7 @@ package Erroutc is
    --  test these values before doing the full error scan.
    --
    --  Note that the call has no effect for continuation messages (those whose
-   --  first character is '\'), and all variables are left unchanged, unless
-   --  -gnatdF is set.
+   --  first character is '\') except for the Has_Insertion_Line setting.
 
    procedure Purge_Messages (From : Source_Ptr; To : Source_Ptr);
    --  All error messages whose location is in the range From .. To (not