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

Reply via email to