From c2d4ca9c1de23ca08fb4b1e1fb5e266c6483090e Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Thu, 26 Sep 2024 10:14:10 +0000 Subject: [PATCH] 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. --- 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 -- 2.47.2