exp_ch4.adb, [...]: Minor typo fix and reformatting.
authorGary Dismukes <dismukes@adacore.com>
Thu, 27 Apr 2017 08:45:22 +0000 (08:45 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 27 Apr 2017 08:45:22 +0000 (10:45 +0200)
2017-04-27  Gary Dismukes  <dismukes@adacore.com>

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

From-SVN: r247294

gcc/ada/ChangeLog
gcc/ada/exp_ch4.adb
gcc/ada/sem_ch4.adb

index c2bd56207dd1eec70b6a30349aead1024b3b8789..5f25858abc7620f71824c6e570a71e55ddc5a71b 100644 (file)
@@ -1,3 +1,7 @@
+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>
 
        * gnat_rm.texi, gnat_ugn.texi,
index e2446e1bfe7ad844666e02970a58ced57b0a7233..cf3f2694fa3e31a1dd4e4076fb9bfd5baa1f3f22 100644 (file)
@@ -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);
index 709bb34440c4328bb47c3f319915030a83fe3a34..d97bdbb8b296a411ea2f58fe0773ba5f8c4a9aae 100644 (file)
@@ -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 --
       ------------------------------