From: Javier Miranda <mira...@adacore.com> The Pre_Class/Post_Class pragmas are rejected at compile time for abstract subprograms.
gcc/ada/ChangeLog: * sem_prag.adb (Analyze_Pre_Post_Condition): Allow the use of pragma Pre_Class/Post_Class with abstract subprograms. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_prag.adb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 90f9c72e726..2165a1cbccc 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -5228,17 +5228,17 @@ package body Sem_Prag is Find_Related_Declaration_Or_Body (N, Do_Checks => not Duplicates_OK); - -- When a pre/postcondition pragma applies to an abstract subprogram, - -- its original form must be an aspect with 'Class. + -- Abstract subprogram if Nkind (Subp_Decl) = N_Abstract_Subprogram_Declaration then - if not From_Aspect_Specification (N) then - Error_Pragma - ("pragma % cannot be applied to abstract subprogram"); - - elsif not Class_Present (N) then - Error_Pragma - ("aspect % requires ''Class for abstract subprogram"); + if not Class_Present (N) then + if From_Aspect_Specification (N) then + Error_Pragma + ("aspect % requires ''Class for abstract subprogram"); + else + Error_Pragma + ("pragma % cannot be applied to abstract subprogram"); + end if; end if; -- Entry declaration -- 2.43.0