gnu/gcc/d54ca4e4da5db312e1756f22a188e20ec44943fe ada: Fix spurious conflict introduced by Ada 2022 declare expression
This streamlines the resolution of declare expressions in Ada 2022, which
started as a manual name resolution to avoid scope management issues, then
added local visibility support, and eventually added scope management with
a kludge for transient scopes.
Transient scopes are not really scopes but placeholders and, therefore, may
traverse regular scopes when the node they service is higher up. This also
has uncovered a loophole in Find_Type_Of_Object in the preanalysis case.
gcc/ada/ChangeLog:
* sem_ch3.adb (Find_Type_Of_Object): In the subtype indication case
for a stand-alone object, invoke Process_Subtype during preanalysis
instead of partially reimplementing it.
* sem_ch5.ads (Has_Sec_Stack_Call): Move back declaration to...
* sem_ch5.adb (Has_Sec_Stack_Call): ...here.
* sem_ch4.adb (Analyze_Expression_With_Actions): Deal with transient
scopes created during analysis.
* sem_res.adb: Add clauses for Sem_Ch9 package.
(Resolve_Declare_Expression): Streamline and deal with transient
scopes created during resolution.
5 files changed