ada: Illegal instance of Generic_1.Generic_2 incorrectly accepted
commit27fd2dc518b696d260336a60fbb0c8baa1ef80a6
authorSteve Baird <baird@adacore.com>
Thu, 8 Jun 2023 21:44:52 +0000 (8 14:44 -0700)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 19 Dec 2023 14:27:47 +0000 (19 15:27 +0100)
treea8077121e05a503dc5ad1a620e7a74ecd13da6fd
parent54d049b2815a03d1f58dee4df1c4cc0b0faddcc1
ada: Illegal instance of Generic_1.Generic_2 incorrectly accepted

If G1 is a generic package and G1.G2 is a child unit (also a generic package)
then it would be illegal if some third generic unit (declared outside of G1)
takes a formal instance of G1.G2, as in "with package I2 is new G1.G2;".
This construct was incorrectly accepted in some cases.

gcc/ada/

* sem_ch12.adb (Check_Generic_Child_Unit): Introduce a new nested
function Adjusted_Inst_Par_Ekind to cope with cases where either
a- the visibility of a compiler-generated renaming is incorrect;
or b- we are inside of a generic parent unit G1 that has a child
unit G1.G2, so instantiation of G1.G2 is permitted.
gcc/ada/sem_ch12.adb