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

Reply via email to