From 82c7a5b12c3759b3e734ab87107de34f3351e700 Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Tue, 26 Jan 2010 10:20:43 +0000 Subject: [PATCH] par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case. 2010-01-26 Robert Dewar * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case. From-SVN: r156240 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/par_sco.adb | 27 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e46d80e6f91..3c8d13fedfd 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2010-01-26 Robert Dewar + + * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for + Case. + 2010-01-26 Robert Dewar * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb index e47dbbc7dea..67806b4f6f9 100644 --- a/gcc/ada/par_sco.adb +++ b/gcc/ada/par_sco.adb @@ -887,7 +887,32 @@ package body Par_SCO is Traverse_Declarations_Or_Statements (Else_Statements (N)); - -- Unconditional exit points + -- Case statement + + when N_Case_Statement => + + -- We include the expression, but not any of the case + -- branches in the generated statement sequence that + -- includes this case statement. + + Sloc_Range (Expression (N), Dummy, Stop); + Set_Statement_Entry; + Process_Decisions (Expression (N), 'X'); + + -- Process case branches + + declare + Alt : Node_Id; + + begin + Alt := First (Alternatives (N)); + while Present (Alt) loop + Traverse_Declarations_Or_Statements (Statements (Alt)); + Next (Alt); + end loop; + end; + + -- Unconditional exit points when N_Requeue_Statement | N_Goto_Statement | -- 2.30.2