comp.lang.ada
 help / color / mirror / Atom feed
From: "David C. Hoos" <david.c.hoos.sr@ada95.com>
Subject: Re: "recursive" accept statement ??
Date: 1998/12/15
Date: 1998-12-15T00:00:00+00:00	[thread overview]
Message-ID: <755mja$mkp@hobbes.crc.com> (raw)
In-Reply-To: 1998Dec15.122957@lri.fr


Frederic Voisin wrote in message <1998Dec15.122957@lri.fr>...
>I have trouble understanding the behavior of the following program (or
>the rationale
>for allowing its behavior, if correct):
The problem is that Trace.Put hides Ada.Text_IO.Put, so you need to use the
fully-qualified subprogram name.  This is also why many Ada coding standards
forbid the use of "use" clauses except to make infix operators visible.
>-------------------------------------
>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 "recursive" accept statement ?? Frederic Voisin
1998-12-15  0:00 ` David C. Hoos [this message]
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