mirror of git://gcc.gnu.org/git/gcc.git
[Ada] Fix resolution of class-wide operations that are generic actuals
2018-07-31 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that may rename a matching class-wide operation only if the renaming declaration for that actual is in an enclosing scope (i.e. within the corrresponding instance). From-SVN: r263090
This commit is contained in:
parent
617709748b
commit
3bb9bd7dcc
|
|
@ -1,3 +1,10 @@
|
|||
2018-07-31 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that
|
||||
may rename a matching class-wide operation only if the renaming
|
||||
declaration for that actual is in an enclosing scope (i.e.
|
||||
within the corrresponding instance).
|
||||
|
||||
2018-07-31 Hristian Kirtchev <kirtchev@adacore.com>
|
||||
|
||||
* checks.adb, contracts.adb, exp_aggr.adb, exp_ch5.adb,
|
||||
|
|
|
|||
|
|
@ -8977,12 +8977,16 @@ package body Sem_Ch4 is
|
|||
-- to same. If in an instance, the operation can be considered
|
||||
-- even if hidden (it may be hidden because the instantiation
|
||||
-- is expanded after the containing package has been analyzed).
|
||||
-- If the subprogram is a generic actual in an enclosing instance,
|
||||
-- it appears as a renaming that is a candidate interpretation as
|
||||
-- well.
|
||||
|
||||
Hom := Current_Entity (Subprog);
|
||||
while Present (Hom) loop
|
||||
if Ekind_In (Hom, E_Procedure, E_Function)
|
||||
and then Present (Renamed_Entity (Hom))
|
||||
and then Is_Generic_Actual_Subprogram (Hom)
|
||||
and then In_Open_Scopes (Scope (Hom))
|
||||
then
|
||||
Candidate := Renamed_Entity (Hom);
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue