comp.lang.ada
 help / color / mirror / Atom feed
From: fv@lri.fr (Frederic Voisin)
Subject: "recursive" accept statement ??
Date: 1998/12/15
Date: 1998-12-15T00:00:00+00:00	[thread overview]
Message-ID: <1998Dec15.122957@lri.fr> (raw)

I have trouble understanding the behavior of the following program (or
the rationale
for allowing its behavior, if correct):
-------------------------------------
with Ada.text_io ; use Ada.text_io ;

procedure Biz is

task trace is
     entry put(str : string) ;
end trace ;

task body trace is
begin
   accept Put (str : string) do
          Ada.text_io.put(str);         -- works fine
          Put(Str);                     -- behave like trace.Put(str) ????
          New_Line;
          end Put;
end trace ;

begin Trace.Put("Hello World");
end Biz;
---------------------------------------

When compiled with GNAT (gnat-3.10p on a Solaris machine) I get only the first
'Hello World" but not the second, while I would have expected the
Put(str) within
the "accept" statement to correspond to Ada.text_io.put and not to an
implicit
rendez-vous with the same task - as if I had written trace.put(str) -
that is sure
to deadlock !!

Is that the right behavior (omitting the name of the called task,
especially from
within itself !) or is it a bug (I cannot test it with another compiler)
?
If allowed, what is the rationale behind, since such construct is much
error-proned
(and I had a hard time finding it)
Shouldn't it deserve a warning ?? or a complain about ambiguity ?
I did not find something really illuminating in the Reference Manual or
Rationale...

Thanks




             reply	other threads:[~1998-12-15  0:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-12-15  0:00 Frederic Voisin [this message]
1998-12-15  0:00 ` "recursive" accept statement ?? David C. Hoos
1998-12-15  0:00 ` Tucker Taft
1998-12-15  0:00 ` dennison
1998-12-15  0:00   ` Matthew Heaney
1998-12-15  0:00 ` Marc A. Criley
1998-12-15  0:00   ` Matthew Heaney
1998-12-23  0:00 ` Robert A Duff
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox