* [COMMITTED] ada: False alarms from -gnatw.t with generic functions
@ 2023-11-28 9:39 Marc Poulhiès
0 siblings, 0 replies; only message in thread
From: Marc Poulhiès @ 2023-11-28 9:39 UTC (permalink / raw)
To: gcc-patches; +Cc: Bob Duff
From: Bob Duff <duff@adacore.com>
Disable the warnings generated by -gnatw.t on instances.
Otherwise, we get false positives.
gcc/ada/
* sem_util.adb (Check_Result_And_Post_State): Disable this when
we're in an instance. Misc cleanup.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_util.adb | 42 +++++++++++++++++++++++++-----------------
1 file changed, 25 insertions(+), 17 deletions(-)
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 423b8d3f936..9215fc7da6c 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -4370,21 +4370,24 @@ package body Sem_Util is
and then Has_No_Output (Subp_Id))
and then not Is_Wrapper (Subp_Id)
then
- if Pragma_Name (Prag) = Name_Contract_Cases then
- Error_Msg_NE (Adjust_Message
- ("contract case does not check the outcome of calling "
- & "&?.t?"), Expr, Subp_Id);
-
- elsif Pragma_Name (Prag) = Name_Refined_Post then
- Error_Msg_NE (Adjust_Message
- ("refined postcondition does not check the outcome of "
- & "calling &?.t?"), Err_Node, Subp_Id);
-
- else
- Error_Msg_NE (Adjust_Message
- ("postcondition does not check the outcome of calling "
- & "&?.t?"), Err_Node, Subp_Id);
- end if;
+ case Pragma_Name (Prag) is
+ when Name_Contract_Cases =>
+ Error_Msg_NE (Adjust_Message
+ ("contract case does not check the outcome of calling "
+ & "&?.t?"), Expr, Subp_Id);
+
+ when Name_Refined_Post =>
+ Error_Msg_NE (Adjust_Message
+ ("refined postcondition does not check the outcome of "
+ & "calling &?.t?"), Err_Node, Subp_Id);
+
+ when Name_Postcondition =>
+ Error_Msg_NE (Adjust_Message
+ ("postcondition does not check the outcome of calling "
+ & "&?.t?"), Err_Node, Subp_Id);
+
+ when others => pragma Assert (False);
+ end case;
end if;
end Check_Conjunct;
@@ -4555,11 +4558,16 @@ package body Sem_Util is
-- Start of processing for Check_Result_And_Post_State
begin
+ -- Do not check in instances, because we already checked the generic
+
+ if In_Instance then
+ return;
+
-- The lack of attribute 'Result or a post-state is classified as a
-- suspicious contract. Do not perform the check if the corresponding
- -- swich is not set.
+ -- switch is not set.
- if not Warn_On_Suspicious_Contract then
+ elsif not Warn_On_Suspicious_Contract then
return;
-- Nothing to do if there is no contract
--
2.42.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-11-28 9:39 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-28 9:39 [COMMITTED] ada: False alarms from -gnatw.t with generic functions Marc Poulhiès
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).