https://gcc.gnu.org/g:c2d4ca9c1de23ca08fb4b1e1fb5e266c6483090e
commit r15-4643-gc2d4ca9c1de23ca08fb4b1e1fb5e266c6483090e Author: Javier Miranda <mira...@adacore.com> Date: Thu Sep 26 10:14:10 2024 +0000 ada: Pragmas Pre_Class/Post_Class rejected for abstract subprograms 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. Diff: --- 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 90f9c72e7260..2165a1cbccc9 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