From eba1160fddffe86acd62411b79e0147ea96bd3f2 Mon Sep 17 00:00:00 2001 From: Justin Squirek Date: Mon, 29 Mar 2021 10:06:55 -0400 Subject: [Ada] INOX: prototype "when" constructs gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Document new feature under pragma Extensions_Allowed. * gnat_rm.texi: Regenerate. * errout.adb, errout.ads (Error_Msg_GNAT_Extension): Created to issue errors when parsing extension only constructs. * exp_ch11.adb, exp_ch11.ads (Expand_N_Raise_When_Statement): Created to expand raise ... when constucts. * exp_ch5.adb, exp_ch5.ads (Expand_N_Goto_When_Statement): Created to expand goto ... when constructs. * exp_ch6.adb, exp_ch6.ads (Expand_N_Return_When_Statement): Created to expand return ... when constructs. * expander.adb (Expand): Add case entries for "when" constructs. * gen_il-gen-gen_nodes.adb, gen_il-types.ads: Add entries for "when" constructs. * par-ch11.adb (P_Raise_Statement): Add processing for raise ... when. * par-ch5.adb (Missing_Semicolon_On_Exit): Renamed to Missing_Semicolon_On_When and moved to par-util.adb. * par-ch6.adb (Get_Return_Kind): Renamed from Is_Simple and processing added for "return ... when" return kind. (Is_Simple): Renamed to Get_Return_Kind. (P_Return_Statement): Add case for return ... when variant of return statement. * par-util.adb, par.adb (Missing_Semicolon_On_When): Added to centeralize parsing of "when" keywords in the context of "when" constructs. * sem.adb (Analyze): Add case for "when" constructs. * sem_ch11.adb, sem_ch11.ads (Analyze_Raise_When_Statement): Created to analyze raise ... when constructs. * sem_ch5.adb, sem_ch5.ads (Analyzed_Goto_When_Statement): Created to analyze goto ... when constructs. * sem_ch6.adb, sem_ch6.ads (Analyze_Return_When_Statement): Created to analyze return ... when constructs. * sprint.adb (Sprint_Node_Actual): Add entries for new "when" nodes. --- gcc/ada/sem.adb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'gcc/ada/sem.adb') diff --git a/gcc/ada/sem.adb b/gcc/ada/sem.adb index a3deef5..783c94aa 100644 --- a/gcc/ada/sem.adb +++ b/gcc/ada/sem.adb @@ -298,6 +298,9 @@ package body Sem is when N_Goto_Statement => Analyze_Goto_Statement (N); + when N_Goto_When_Statement => + Analyze_Goto_When_Statement (N); + when N_Handled_Sequence_Of_Statements => Analyze_Handled_Statements (N); @@ -505,6 +508,9 @@ package body Sem is when N_Raise_Statement => Analyze_Raise_Statement (N); + when N_Raise_When_Statement => + Analyze_Raise_When_Statement (N); + when N_Raise_xxx_Error => Analyze_Raise_xxx_Error (N); @@ -526,6 +532,9 @@ package body Sem is when N_Requeue_Statement => Analyze_Requeue (N); + when N_Return_When_Statement => + Analyze_Return_When_Statement (N); + when N_Simple_Return_Statement => Analyze_Simple_Return_Statement (N); -- cgit v1.1