sem_disp.adb (Check_Dispatching_Operation): Do not flag subprograms inherited from...
authorHristian Kirtchev <kirtchev@adacore.com>
Tue, 31 Oct 2006 18:09:03 +0000 (19:09 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 31 Oct 2006 18:09:03 +0000 (19:09 +0100)
commit67f3c450aa496462153743af600814121234b63c
tree9c45ac0587feaceb2cd3c805ca1ad16afa1c658a
parent3100e48f7cdb3af1709b00d9d71a7932d92dcbba
sem_disp.adb (Check_Dispatching_Operation): Do not flag subprograms inherited from an interface ancestor by another...

2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
    Ed Schonberg  <schonberg@adacore.com>
    Javier Miranda  <miranda@adacore.com>
    Gary Dismukes  <dismukes@adacore.com>

* sem_disp.adb (Check_Dispatching_Operation): Do not flag subprograms
inherited from an interface ancestor by another interface in the
context of an instance as 'late'.
(Is_Tag_Indeterminate, Propagate_Tag): Handle properly the dereference
of a call to a function that dispatches on access result.
(Check_Dispatching_Operation): In case of late overriding of a primitive
that covers abstract interface subprograms we register it in all the
secondary dispatch tables associated with abstract interfaces.
(Check_Dispatching_Call): Add check that a dispatching call is not made
to a function with a controlling result of a limited type. This is a
current implementation restriction.
(Check_Controlling_Formal): Remove bogus checks for E.2.2(14).
(Check_Dispatching_Operation): Do no emit a warning if the controlling
argument is an interface type that is a generic formal.
(Is_Interface_Subprogram): Removed.
(Check_Dispatching_Operation): If the subprogram is not a dispatching
operation, check the formals to handle the case in which it is
associated with an abstract interface type.

From-SVN: r118308
gcc/ada/sem_disp.adb