From: Jere <jhb.chat@gmail.com>
Subject: Re: Type invariants and private extensions?
Date: Mon, 11 Sep 2017 15:00:08 -0700 (PDT)
Date: 2017-09-11T15:00:08-07:00 [thread overview]
Message-ID: <ec2642af-9b8e-49a8-a797-f0d56498d786@googlegroups.com> (raw)
In-Reply-To: <op6v4m$tmm$1@gioia.aioe.org>
On Monday, September 11, 2017 at 5:27:54 PM UTC-4, Victor Porton wrote:
> Egil H H wrote:
>
> > On Monday, September 11, 2017 at 10:48:46 PM UTC+2, Victor Porton wrote:
> >> > The Invariant will then be inherited by all derived types
> >>
> >> It is not what I want. I want different invariants for different derived
> >> types.
> >>
> >
> > You can add new invariants in addition to the ones inherited
>
> I cannot: the compiler gives an error:
>
> package P is
>
> type T is tagged private;
>
> private
>
> type T is tagged null record;
>
> end P;
>
> with P; use P;
>
> package P1 is
>
> type T1 is new T with null record
> with Type_Invariant => True;
>
> end P1;
>
>
> $ gnatgcc -gnatc -c p1.ads
> p1.ads:6:10: aspect "Type_Invariant" only allowed for private type or
> corresponding full view
>
> --
> Victor Porton - http://portonvictor.org
You aren't applying it to a private type. Try:
package P1 is
type T1 is new T with private
with Type_Invariant'Class => True;
private
type T1 is new T with null record;
end P1;
The relevant RM section:
7.3.2
2/3
Type_Invariant
This aspect shall be specified by an expression, called an
invariant expression. Type_Invariant may be specified on a
private_type_declaration, on a private_extension_declaration,
or on a full_type_declaration that declares the completion of
a private type or private extension.
3/3
Type_Invariant'Class
This aspect shall be specified by an expression, called an
invariant expression. Type_Invariant'Class may be specified
on a private_type_declaration or a private_extension_declaration.
next prev parent reply other threads:[~2017-09-11 22:00 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-11 19:51 Type invariants and private extensions? Victor Porton
2017-09-11 20:00 ` Egil H H
2017-09-11 20:48 ` Victor Porton
2017-09-11 21:19 ` Egil H H
2017-09-11 21:27 ` Victor Porton
2017-09-11 21:49 ` Egil H H
2017-09-11 22:00 ` Victor Porton
2017-09-11 22:06 ` Egil H H
2017-09-12 7:30 ` Dmitry A. Kazakov
2017-09-11 22:00 ` Jere [this message]
2017-09-11 22:02 ` Victor Porton
2017-09-12 18:26 ` Jeffrey R. Carter
2017-09-12 18:54 ` Victor Porton
2017-09-12 19:56 ` Jeffrey R. Carter
2017-09-12 20:08 ` Victor Porton
2017-09-12 22:34 ` Shark8
2017-09-12 22:59 ` Victor Porton
2017-09-13 4:21 ` Jere
2017-09-13 4:28 ` Jere
2017-09-13 4:34 ` Jere
2017-09-14 13:52 ` Victor Porton
2017-09-15 0:48 ` Jere
2017-09-16 14:22 ` Victor Porton
2017-09-14 7:28 ` Shark8
2017-09-14 13:56 ` Victor Porton
2017-09-14 13:58 ` Victor Porton
2017-09-11 22:48 ` Shark8
2017-10-02 23:16 ` 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