]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: Crash on selected component of formal derived type in generic instance
authorGary Dismukes <dismukes@adacore.com>
Thu, 23 May 2024 22:06:21 +0000 (22:06 +0000)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 20 Jun 2024 08:50:57 +0000 (10:50 +0200)
commitecb84b0aa4eac2050eedd7f9a66dd7393d5d31c2
tree4556981a4b445c594f2f59fa16e71a84d8161fe7
parent3c6dcd1d018da645316e3969748d70a1efd66dd2
ada: Crash on selected component of formal derived type in generic instance

The compiler crashes on an instantiation of a generic child unit G1.GC
that has a formal private extension P_Ext of a private type P declared
in the parent G1 whose full type has a component C, when analyzing a
selected component ACC.C whose prefix is of an access type coming from
an instantiation of another generic G2 where the designated type is
the formal type P_Ext (coming in from a formal type of G2).

gcc/ada/

* sem_ch4.adb (Try_Selected_Component_In_Instance): Reverse if_statement
clauses so that the testing for the special case of extensions of private
types in instance bodies is done first, followed by the testing for the case
of a parent type that's a generic actual type. In the extension case, apply
Base_Type to the type actual in the test of Used_As_Generic_Actual, and add
a test of Present (Parent_Subtype (Typ)).
gcc/ada/sem_ch4.adb