aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2023-11-16 16:45:13 -0500
committerMarc Poulhiès <poulhies@adacore.com>2023-11-28 10:35:48 +0100
commitecdcb83025143f00e95ce9f86b9e80c770116c46 (patch)
treed13e6610ce6d79c28f131cc80de080bb2730848e
parent39cb85867dee738bd3773b63c2b48d5d0731dea5 (diff)
downloadgcc-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.adb42
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