From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ada 95 and Class attribute for none-tagged incomplete type
Date: Fri, 14 Aug 2009 15:01:15 -0400
Date: 2009-08-14T15:01:15-04:00 [thread overview]
Message-ID: <wcc3a7uusn8.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: h62oqn$iq2$1@munin.nbi.dk
"Randy Brukardt" <randy@rrsoftware.com> writes:
>...All this special rule eliminates is the need to declare
> an incomplete type in this one unusual case (the private type in cases like
> this is best declared as tagged, so this shouldn't happen very often). Seems
> like a pile of work for an implementation and for the language just to
> eliminate one line in a private part.
The problem is that declaring that incomplete type is illegal.
Eliminating the need for one _illegal_ line isn't such a bad thing. ;-)
package P is
type Priv is private;
private
type Priv is tagged; -- Illegal!
type Acc is access all Priv'Class;
type Priv is tagged
record
Next : Acc;
end record;
end P;
We could have made it legal, I suppose. But having three views of a
type might make more trouble for the compiler than the existing
rules.
On the third hand, compilers have to deal with:
package P is
type Priv is private;
private
task type Priv is ...;
end P;
package body P is
task body Priv is separate;
end P;
separate (P)
task body Priv is ...;
where there are four things called Priv, which are all really the same
thing.
- Bob
next prev parent reply other threads:[~2009-08-14 19:01 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-02 6:55 Ada 95 and Class attribute for none-tagged incomplete type Hibou57 (Yannick Duchêne)
2009-08-03 15:26 ` Adam Beneschan
2009-08-03 18:45 ` Dmitry A. Kazakov
2009-08-13 1:50 ` Randy Brukardt
2009-08-13 8:18 ` Niklas Holsti
2009-08-13 13:16 ` Robert A Duff
2009-08-14 4:21 ` Randy Brukardt
2009-08-14 19:01 ` Robert A Duff [this message]
2009-08-14 23:41 ` Randy Brukardt
2009-08-15 14:33 ` Robert A Duff
2009-08-14 4:17 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox