[Ada] Spurious visibility error on Declare_Expression with renames
authorEd Schonberg <schonberg@adacore.com>
Thu, 25 Jun 2020 20:44:27 +0000 (16:44 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 16 Oct 2020 07:31:25 +0000 (03:31 -0400)
gcc/ada/

* sem_res.adb (Resolve_Declare_Expression): Retrieve the created
block entity that is the scope of the local declarations, from
either a local object declaration or an object renaming
declaration. The block entity does not have an explicit
declaration, but appears as the scope of all locally declared
objects.

gcc/ada/sem_res.adb

index de1bee99540cd511e56acdddea488d53029eac11..cd87ec235afe0a8da094309b8a7fef65b2829d47 100644 (file)
@@ -7441,11 +7441,14 @@ package body Sem_Res is
       --  Install the scope created for local declarations, if
       --  any. The syntax allows a Declare_Expression with no
       --  declarations, in analogy with block statements.
+      --  Note that that scope has no explicit declaration, but
+      --  appears as the scope of all entities declared therein.
 
       Decl := First (Actions (N));
 
       while Present (Decl) loop
-         exit when Nkind (Decl) = N_Object_Declaration;
+         exit when Nkind (Decl)
+                     in N_Object_Declaration | N_Object_Renaming_Declaration;
          Next (Decl);
       end loop;