diff options
author | Ed Schonberg <schonberg@adacore.com> | 2007-08-16 14:20:00 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-08-16 14:20:00 +0200 |
commit | 369925233a003cf92489080ed0a0bcb94629b08b (patch) | |
tree | 44234817e6ca847458c9b98e2ec0b75be024b104 | |
parent | 0d01a4abfbaeae96135e2c5383850d3a2ea66aa1 (diff) | |
download | gcc-369925233a003cf92489080ed0a0bcb94629b08b.zip gcc-369925233a003cf92489080ed0a0bcb94629b08b.tar.gz gcc-369925233a003cf92489080ed0a0bcb94629b08b.tar.bz2 |
sem_ch12.adb (Copy_Generic_Node): A reference to a child unit of the generic for an enclosing instance is a...
2007-08-16 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Copy_Generic_Node): A reference to a child unit of the
generic for an enclosing instance is a global reference, even though
its scope is the enclosing instance.
From-SVN: r127546
-rw-r--r-- | gcc/ada/sem_ch12.adb | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index fc649dc..f48724d 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -5628,6 +5628,8 @@ package body Sem_Ch12 is -- reset the entity in the generic copy. A global reference has a -- smaller depth than the parent, or else the same depth in case -- both are distinct compilation units. + -- A child unit is implicitly declared within the enclosing parent + -- but is in fact global to it, and must be preserved. -- It is also possible for Current_Instantiated_Parent to be -- defined, and for this not to be a nested generic, namely if the @@ -5658,7 +5660,9 @@ package body Sem_Ch12 is or else Nkind (Ent) = N_Defining_Operator_Symbol) or else No (Scope (Ent)) - or else Scope (Ent) = Current_Instantiated_Parent.Gen_Id + or else + (Scope (Ent) = Current_Instantiated_Parent.Gen_Id + and then not Is_Child_Unit (Ent)) or else (Scope_Depth (Scope (Ent)) > Scope_Depth (Current_Instantiated_Parent.Gen_Id) and then |