comp.lang.ada
 help / color / mirror / Atom feed
* "recursive" accept statement ??
@ 1998-12-15  0:00 Frederic Voisin
  1998-12-15  0:00 ` Marc A. Criley
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Frederic Voisin @ 1998-12-15  0:00 UTC (permalink / 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




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~1998-12-23  0:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-12-15  0:00 "recursive" accept statement ?? Frederic Voisin
1998-12-15  0:00 ` Marc A. Criley
1998-12-15  0:00   ` Matthew Heaney
1998-12-15  0:00 ` dennison
1998-12-15  0:00   ` Matthew Heaney
1998-12-15  0:00 ` Tucker Taft
1998-12-15  0:00 ` David C. Hoos
1998-12-23  0:00 ` Robert A Duff

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