From 0c3ef0cc2a5bbf36f5e2767301408d1d4eb510fa Mon Sep 17 00:00:00 2001 From: Gary Dismukes Date: Thu, 27 Apr 2017 08:45:22 +0000 Subject: [PATCH] exp_ch4.adb, [...]: Minor typo fix and reformatting. 2017-04-27 Gary Dismukes * exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting. From-SVN: r247294 --- gcc/ada/ChangeLog | 4 ++ gcc/ada/exp_ch4.adb | 9 ++-- gcc/ada/sem_ch4.adb | 114 ++++++++++++++++++++++---------------------- 3 files changed, 65 insertions(+), 62 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c2bd56207dd..5f25858abc7 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Gary Dismukes + + * exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting. + 2017-04-25 Arnaud Charlet * gnat_rm.texi, gnat_ugn.texi, diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index e2446e1bfe7..cf3f2694fa3 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -4869,11 +4869,10 @@ package body Exp_Ch4 is else if Generate_C_Code then - -- We cannot ensure that correct C code will be generated if - -- any temporary is created down the line (to e.g. handle - -- checks or capture values) since we might end up with - -- dangling references to local variables, so better be safe - -- and reject the construct. + -- We cannot ensure that correct C code will be generated if any + -- temporary is created down the line (to e.g. handle checks or + -- capture values) since we might end up with dangling references + -- to local variables, so better be safe and reject the construct. Error_Msg_N ("case expression too complex, use case statement instead", N); diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 709bb34440c..d97bdbb8b29 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -7521,20 +7521,20 @@ package body Sem_Ch4 is is Pref_Typ : constant Entity_Id := Etype (Prefix); + function Constant_Indexing_OK return Boolean; + -- Constant_Indexing is legal if there is no Variable_Indexing defined + -- for the type, or else node not a target of assignment, or an actual + -- for an IN OUT or OUT formal (RM 4.1.6 (11)). + function Expr_Matches_In_Formal (Subp : Entity_Id; Par : Node_Id) return Boolean; -- Find formal corresponding to given indexed component that is an -- actual in a call. Note that the enclosing subprogram call has not - -- beenanalyzed yet, and the parameter list is not normalized, so + -- been analyzed yet, and the parameter list is not normalized, so -- that if the argument is a parameter association we must match it -- by name and not by position. - function Constant_Indexing_OK return Boolean; - -- Constant_Indexing is legal if there is no Variable_Indexing defined - -- for the type, or else node not a target of assignment, or an actual - -- for an IN OUT or OUT formal (RM 4.1.6 (11)). - function Find_Indexing_Operations (T : Entity_Id; Nam : Name_Id; @@ -7544,56 +7544,6 @@ package body Sem_Ch4 is -- interpretations. Flag Is_Constant should be set when the context is -- constant indexing. - ----------------------------- - -- Expr_Matches_In_Formal -- - ----------------------------- - - function Expr_Matches_In_Formal - (Subp : Entity_Id; - Par : Node_Id) return Boolean - is - Actual : Node_Id; - Formal : Node_Id; - - begin - Formal := First_Formal (Subp); - Actual := First (Parameter_Associations ((Parent (Par)))); - - if Nkind (Par) /= N_Parameter_Association then - - -- Match by position. - - while Present (Actual) and then Present (Formal) loop - exit when Actual = Par; - Next (Actual); - - if Present (Formal) then - Next_Formal (Formal); - - -- Otherwise this is a parameter mismatch, the error is - -- reported elsewhere, or else variable indexing is implied. - - else - return False; - end if; - end loop; - - else - -- Match by name - - while Present (Formal) loop - exit when Chars (Formal) = Chars (Selector_Name (Par)); - Next_Formal (Formal); - - if No (Formal) then - return False; - end if; - end loop; - end if; - - return Present (Formal) and then Ekind (Formal) = E_In_Parameter; - end Expr_Matches_In_Formal; - -------------------------- -- Constant_Indexing_OK -- -------------------------- @@ -7653,7 +7603,7 @@ package body Sem_Ch4 is end loop; end; - -- All interpretations have a matching in-formal. + -- All interpretations have a matching in-mode formal return True; @@ -7711,6 +7661,56 @@ package body Sem_Ch4 is return True; end Constant_Indexing_OK; + ----------------------------- + -- Expr_Matches_In_Formal -- + ----------------------------- + + function Expr_Matches_In_Formal + (Subp : Entity_Id; + Par : Node_Id) return Boolean + is + Actual : Node_Id; + Formal : Node_Id; + + begin + Formal := First_Formal (Subp); + Actual := First (Parameter_Associations ((Parent (Par)))); + + if Nkind (Par) /= N_Parameter_Association then + + -- Match by position + + while Present (Actual) and then Present (Formal) loop + exit when Actual = Par; + Next (Actual); + + if Present (Formal) then + Next_Formal (Formal); + + -- Otherwise this is a parameter mismatch, the error is + -- reported elsewhere, or else variable indexing is implied. + + else + return False; + end if; + end loop; + + else + -- Match by name + + while Present (Formal) loop + exit when Chars (Formal) = Chars (Selector_Name (Par)); + Next_Formal (Formal); + + if No (Formal) then + return False; + end if; + end loop; + end if; + + return Present (Formal) and then Ekind (Formal) = E_In_Parameter; + end Expr_Matches_In_Formal; + ------------------------------ -- Find_Indexing_Operations -- ------------------------------ -- 2.30.2