From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ada 95 and Class attribute for none-tagged incomplete type
Date: Thu, 13 Aug 2009 09:16:29 -0400
Date: 2009-08-13T09:16:29-04:00 [thread overview]
Message-ID: <wcc7hx7onv6.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 4a83cc73$0$6272$4f793bc4@news.tdc.fi
Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
> Randy Brukardt wrote:
>> A quick example:
>> package P is
>> type Priv is private;
>> type Acc is access all Priv'Class; -- Legal!!!!!!
>> private
>> type Priv is tagged null record;
>> end P;
>
> This conflicts with 7.3.1(9) because Priv'Class is used before the
> private part. Gnat (Debian Lenny) says:
>
> p.ads:3:27: tagged type required, found private type "Priv" defined at
> line 2
>
> If the declaration of type Acc is moved below "private", Gnat accepts
> the code, as it should by 7.3.1(8-9).
I agree with Niklas. The above is illegal.
The purpose of the rule is so you can create recursive types, as in:
package P is
type Priv is private;
private
type Acc is access all Priv'Class; -- Legal!!!!!!
type Priv is tagged
record
Next : Acc;
... --etc.
end record;
end P;
without exposing the taggedness to clients. Note that Acc is in the
private part, so there's no privacy-breaking going on.
- Bob
next prev parent reply other threads:[~2009-08-13 13:16 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 [this message]
2009-08-14 4:21 ` Randy Brukardt
2009-08-14 19:01 ` Robert A Duff
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