comp.lang.ada
 help / color / mirror / Atom feed
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



  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