aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-01-11 22:25:13 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2022-07-12 12:24:11 +0000
commita54ad45a63182bf6d1873ed55d641769638e4c8f (patch)
tree7812dea59b5df2a0ce0820df275300c1041a4f43 /gcc
parenta31eda15463b00bad7c48d973e4e7e8a33006379 (diff)
downloadgcc-a54ad45a63182bf6d1873ed55d641769638e4c8f.zip
gcc-a54ad45a63182bf6d1873ed55d641769638e4c8f.tar.gz
gcc-a54ad45a63182bf6d1873ed55d641769638e4c8f.tar.bz2
[Ada] Accept aspect Yield on subprogram bodies acting as specs
A small fix for the aspect Yield defined in AI12-0279 for Ada 2022, to accept aspect given for a subprogram body which acts as its own spec. For example: procedure Switch with Yield => True is begin ... end Switch; gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Yield): Look at the entity kind, not at the declaration kind.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_ch13.adb10
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index bb654ab..c668310 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -2724,13 +2724,11 @@ package body Sem_Ch13 is
Expr_Value : Boolean := False;
begin
- -- Check valid declarations for 'Yield
+ -- Check valid entity for 'Yield
- if Nkind (N) in N_Abstract_Subprogram_Declaration
- | N_Entry_Declaration
- | N_Generic_Subprogram_Declaration
- | N_Subprogram_Declaration
- | N_Formal_Subprogram_Declaration
+ if (Is_Subprogram (E)
+ or else Is_Generic_Subprogram (E)
+ or else Is_Entry (E))
and then not Within_Protected_Type (E)
then
null;