Commit 0c3ef0cc by Gary Dismukes Committed by Arnaud Charlet

exp_ch4.adb, [...]: Minor typo fix and reformatting.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting.

From-SVN: r247294
parent 985b8393
2017-04-27 Gary Dismukes <dismukes@adacore.com>
* exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting.
2017-04-25 Arnaud Charlet <charlet@adacore.com> 2017-04-25 Arnaud Charlet <charlet@adacore.com>
* gnat_rm.texi, gnat_ugn.texi, * gnat_rm.texi, gnat_ugn.texi,
......
...@@ -4869,11 +4869,10 @@ package body Exp_Ch4 is ...@@ -4869,11 +4869,10 @@ package body Exp_Ch4 is
else else
if Generate_C_Code then if Generate_C_Code then
-- We cannot ensure that correct C code will be generated if -- We cannot ensure that correct C code will be generated if any
-- any temporary is created down the line (to e.g. handle -- temporary is created down the line (to e.g. handle checks or
-- checks or capture values) since we might end up with -- capture values) since we might end up with dangling references
-- dangling references to local variables, so better be safe -- to local variables, so better be safe and reject the construct.
-- and reject the construct.
Error_Msg_N Error_Msg_N
("case expression too complex, use case statement instead", N); ("case expression too complex, use case statement instead", N);
......
...@@ -7521,20 +7521,20 @@ package body Sem_Ch4 is ...@@ -7521,20 +7521,20 @@ package body Sem_Ch4 is
is is
Pref_Typ : constant Entity_Id := Etype (Prefix); 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 function Expr_Matches_In_Formal
(Subp : Entity_Id; (Subp : Entity_Id;
Par : Node_Id) return Boolean; Par : Node_Id) return Boolean;
-- Find formal corresponding to given indexed component that is an -- Find formal corresponding to given indexed component that is an
-- actual in a call. Note that the enclosing subprogram call has not -- 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 -- that if the argument is a parameter association we must match it
-- by name and not by position. -- 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 function Find_Indexing_Operations
(T : Entity_Id; (T : Entity_Id;
Nam : Name_Id; Nam : Name_Id;
...@@ -7544,56 +7544,6 @@ package body Sem_Ch4 is ...@@ -7544,56 +7544,6 @@ package body Sem_Ch4 is
-- interpretations. Flag Is_Constant should be set when the context is -- interpretations. Flag Is_Constant should be set when the context is
-- constant indexing. -- 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 -- -- Constant_Indexing_OK --
-------------------------- --------------------------
...@@ -7653,7 +7603,7 @@ package body Sem_Ch4 is ...@@ -7653,7 +7603,7 @@ package body Sem_Ch4 is
end loop; end loop;
end; end;
-- All interpretations have a matching in-formal. -- All interpretations have a matching in-mode formal
return True; return True;
...@@ -7711,6 +7661,56 @@ package body Sem_Ch4 is ...@@ -7711,6 +7661,56 @@ package body Sem_Ch4 is
return True; return True;
end Constant_Indexing_OK; 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 -- -- Find_Indexing_Operations --
------------------------------ ------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment