diff options
author | Bob Duff <duff@adacore.com> | 2023-11-16 16:45:13 -0500 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-11-28 10:35:48 +0100 |
commit | ecdcb83025143f00e95ce9f86b9e80c770116c46 (patch) | |
tree | d13e6610ce6d79c28f131cc80de080bb2730848e | |
parent | 39cb85867dee738bd3773b63c2b48d5d0731dea5 (diff) | |
download | gcc-ecdcb83025143f00e95ce9f86b9e80c770116c46.zip gcc-ecdcb83025143f00e95ce9f86b9e80c770116c46.tar.gz gcc-ecdcb83025143f00e95ce9f86b9e80c770116c46.tar.bz2 |
ada: False alarms from -gnatw.t with generic functions
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.
-rw-r--r-- | gcc/ada/sem_util.adb | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 423b8d3..9215fc7 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 |