diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-26 07:37:35 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-26 07:37:35 +0000 |
commit | 2f9b002b3385c121f006d8a5c2663328d051fcc9 (patch) | |
tree | d6dba0885307ffe483d5ac8545955b2b1195bd79 | |
parent | 673c5366115978678093d82b6fb755ae22865a60 (diff) | |
download | gcc-2f9b002b3385c121f006d8a5c2663328d051fcc9.tar.gz |
2008-03-26 Robert Dewar <dewar@adacore.com>
* errout.ads: Document new !! insertion sequence
* errout.adb (N_Pragma): Chars field removed, use Chars
(Pragma_Identifier (.. instead.
Replace use of Warnings_Off by Has_Warnings_Off
(Error_Msg_Internal): Don't delete warning ending in !!
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133556 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/errout.adb | 28 | ||||
-rw-r--r-- | gcc/ada/errout.ads | 10 |
2 files changed, 28 insertions, 10 deletions
diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index e0f649222d6..106af0aa5ca 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2007, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2008, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -766,6 +766,11 @@ package body Errout is elsif Debug_Flag_GG then null; + -- Keep warning if message text ends in !! + + elsif Msg (Msg'Last) = '!' and then Msg (Msg'Last - 1) = '!' then + null; + -- Here is where we delete a warning from a with'ed unit else @@ -1364,12 +1369,12 @@ package body Errout is if Error_Posted (N) then return True; - elsif Nkind (N) in N_Entity and then Warnings_Off (N) then + elsif Nkind (N) in N_Entity and then Has_Warnings_Off (N) then return True; elsif Is_Entity_Name (N) and then Present (Entity (N)) - and then Warnings_Off (Entity (N)) + and then Has_Warnings_Off (Entity (N)) then return True; @@ -2392,14 +2397,17 @@ package body Errout is end if; -- The only remaining possibilities are identifiers, defining - -- identifiers, pragmas, and pragma argument associations, i.e. - -- nodes that have a Chars field. + -- identifiers, pragmas, and pragma argument associations. - -- Internal names generally represent something gone wrong. An exception - -- is the case of internal type names, where we try to find a reasonable - -- external representation for the external name + if Nkind (Node) = N_Pragma then + Nam := Pragma_Name (Node); - if Is_Internal_Name (Chars (Node)) + -- The other cases have Chars fields, and we want to test for possible + -- internal names, which generally represent something gone wrong. An + -- exception is the case of internal type names, where we try to find a + -- reasonable external representation for the external name + + elsif Is_Internal_Name (Chars (Node)) and then ((Is_Entity_Name (Node) and then Present (Entity (Node)) @@ -2423,6 +2431,8 @@ package body Errout is Nam := Chars (Ent); end if; + -- If not internal name, just use name in Chars field + else Nam := Chars (Node); end if; diff --git a/gcc/ada/errout.ads b/gcc/ada/errout.ads index f58181eb018..b9b0616fe1c 100644 --- a/gcc/ada/errout.ads +++ b/gcc/ada/errout.ads @@ -120,7 +120,8 @@ package Errout is -- reference to the Any_Type node, then the message is suppressed. -- 6. Note that cases 2-5 only apply to error messages, not warning - -- messages. Warning messages are only suppressed for case 1. + -- messages. Warning messages are only suppressed for case 1, and + -- when they come from other than the main extended unit. -- This normal suppression action may be overridden in cases 2-5 (but not -- in case 1) by setting All_Errors mode, or by setting the special @@ -264,6 +265,13 @@ package Errout is -- it, since it makes it clear that the continuation is part of an -- unconditional message. + -- Insertion character !! (unconditional warning) + + -- Normally warning messages issued in other than the main unit are + -- suppressed. If the message ends with !! then this suppression is + -- avoided. This is currently only used by the Compile_Time_Warning + -- pragma to ensure the message for a with'ed unit is output. + -- Insertion character ? (Question: warning message) -- The character ? appearing anywhere in a message makes the message -- warning instead of a normal error message, and the text of the |