[COMMITTED,18/35] ada: Pragmas Pre_Class/Post_Class rejected for abstract subprograms
Commit Message
From: Javier Miranda <miranda@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(-)
@@ -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