From 4fb2a53f2e161a0e5df410fa0c691e4d708906cf Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Thu, 24 Jul 2025 10:20:40 +0200 Subject: [PATCH] ada: Improve error for pre/post on generic formal subprogram in Ada 2012 mode 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. --- 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 1e115aae019..28c5f1776db 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.47.3