[Ada] Reorder preanalysis of static expression functions
authorPiotr Trojanek <trojanek@adacore.com>
Fri, 28 May 2021 13:32:16 +0000 (15:32 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 9 Jul 2021 12:35:26 +0000 (12:35 +0000)
gcc/ada/

* sem_ch6.adb (Analyze_Expression_Function): Reorder code.

gcc/ada/sem_ch6.adb

index 0ecac3f..d543253 100644 (file)
@@ -524,6 +524,12 @@ package body Sem_Ch6 is
             Install_Formals (Def_Id);
             Preanalyze_Spec_Expression (Expr, Typ);
             End_Scope;
+         else
+            Push_Scope (Def_Id);
+            Install_Formals (Def_Id);
+            Preanalyze_Formal_Expression (Expr, Typ);
+            Check_Limited_Return (Orig_N, Expr, Typ);
+            End_Scope;
          end if;
 
          --  If this is a wrapper created in an instance for a formal
@@ -561,16 +567,6 @@ package body Sem_Ch6 is
             end;
          end if;
 
-         --  Preanalyze the expression if not already done above
-
-         if not Inside_A_Generic then
-            Push_Scope (Def_Id);
-            Install_Formals (Def_Id);
-            Preanalyze_Formal_Expression (Expr, Typ);
-            Check_Limited_Return (Orig_N, Expr, Typ);
-            End_Scope;
-         end if;
-
          --  In the case of an expression function marked with the aspect
          --  Static, we need to check the requirement that the function's
          --  expression is a potentially static expression. This is done