* Re: Overloading and polymorphism
1994-12-25 18:56 Overloading and polymorphism Moti Ben-Ari
@ 1995-01-03 20:41 ` Robert I. Eachus
0 siblings, 0 replies; 2+ messages in thread
From: Robert I. Eachus @ 1995-01-03 20:41 UTC (permalink / raw)
In article <3dkf92$i0s@israel-info.datasrv.co.il> benari@zeus.datasrv.co.il (Moti Ben-Ari) writes:
> Are there any similar problems in Ada 9X or does everything
> work out OK because each call is dispatched on a tag?
Most of the problems are avoided in Ada 9X, but mostly due to
strong typing. In fact, in many cases in Ada 9X, calls which appear
to be dispatching in the source code can be analyzed at compile time
and the dispatch table bypassed. In the cases where this does not
happen, if there is a possibility of a type violation, the langauge
does specify run-time checking. (The freezing rules also help. Since
a primitive subprogram declaration cannot occur after the type is
frozen, dispatching operations, which must be primitive, must be
declared relatively soon after the declaration of the type.)
Having said all that it is still possible to create cases in Ada 9X
where the dispatch is not to the "expected" routine. But in general
you have to know a lot to create the problem cases, they don't happen
by accident. (In fact I suspect that most of the cases are so
obviously pathological that good compilers will generate warning
messages--not for the call, but for the overloading. AFAIK, the
problem only occurs when the scope of a dispatching subprogram does
not match the scope of the type being dispatched on, and, yes, I
realize that IS very hard to do.)
--
Robert I. Eachus
with Standard_Disclaimer;
use Standard_Disclaimer;
function Message (Text: in Clever_Ideas) return Better_Ideas is...
^ permalink raw reply [flat|nested] 2+ messages in thread