From: Piotr Trojanek <[email protected]>
Instead of saying that pragma placement is illegal, we now say that it
would be legal in Ada 2022.
gcc/ada/ChangeLog:
* sem_prag.adb (Analyze_Pre_Post_Condition): Handle contracts on
generic formal subprograms like on declarations of access-to-subprogram
types.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_prag.adb | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 1e115aae0195..28c5f1776dbb 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -5848,9 +5848,12 @@ package body Sem_Prag is
-- For Ada 2022, pre/postconditions can appear on formal subprograms
elsif Nkind (Subp_Decl) = N_Formal_Concrete_Subprogram_Declaration
- and then Ada_Version >= Ada_2022
then
- null;
+ if Ada_Version < Ada_2022 then
+ Error_Msg_Ada_2022_Feature
+ ("pre/postcondition on formal subprogram", Loc);
+ raise Pragma_Exit;
+ end if;
-- An access-to-subprogram type can have pre/postconditions, which
-- are both analyzed when attached to the type and copied to the
--
2.43.0