From: Robert A Duff <bobduff@world.std.com>
Subject: Re: Static assertions
Date: Fri, 18 May 2001 13:38:15 GMT
Date: 2001-05-18T13:38:15+00:00 [thread overview]
Message-ID: <wcc7kzeu69k.fsf@world.std.com> (raw)
In-Reply-To: mailman.990164357.8926.comp.lang.ada@ada.eu.org
Christoph Grein <christoph.grein@eurocopter.com> writes:
> Robert A Duff wrote:
>
> > Interesting. But shouldn't it be Assert'(...)?
> > ^ ie a qualified expression
What I meant was that it's better style to use a qualfied expression
than a type conversion, in cases where both work, because a qual exp is
less powerful. That is, why say "Warning Will Robinson: I'm converting
types" when you're *not* converting types?
(IMHO a type conversion that converts from a type to itself should cause
at least a warning.)
> package Verifier is
> subtype Assert is Boolean range True .. True;
>
> Assert_1 : constant := Boolean'Pos (Assert (Integer'Size = 16));
> Assert_2 : constant := Boolean'Pos
> (Assert (Integer'Size = 2 * Character'Size));
> end Verifier;
>
> With a type conversion this compiles on my Apex Ada 95 Compiler 3.0.0b on
Sounds like a compiler bug, which you should report. The above code is
illegal (as desired). The AverCom Ada front end gives two error
messages for the above.
> It seems like the type conversion is ignored.
[... RM exegesis snipped]
You missed 4.6(51), which says that the subtype is checked. A
type_conversion is really a subtype conversion, despite its name. That
is, a type_conversion T(X) converts the value of X to the type of
subtype T, and then checks that the value is in the subtype T.
> Thus there is nowhere specified that the subtype range is checked.
> Put_Line (Integer'Image (Natural (-2.3)));
> compiles just fine and produces -2.
Again, that sounds like a compiler bug. The AverCom Ada compiler says
it's illegal.
> So thanx to Robert Duff for hinting.
Well, I wasn't hinting at what you thought I was hinting. ;-)
- Bob
next prev parent reply other threads:[~2001-05-18 13:38 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-05-18 5:34 Static assertions Christoph Grein
2001-05-18 13:38 ` Robert A Duff [this message]
2001-05-18 16:15 ` Jeffrey Carter
2001-05-18 17:25 ` Ted Dennison
2001-05-18 21:27 ` Robert A Duff
2001-05-18 22:46 ` Jeffrey Carter
2001-05-19 22:53 ` Robert A Duff
-- strict thread matches above, loose matches on Subject: below --
2001-05-17 15:07 Jean-Pierre Rosen
2001-05-17 17:44 ` Jeffrey Carter
2001-05-17 19:09 ` Marin David Condic
2001-05-17 22:34 ` Jeffrey Carter
2001-05-18 13:39 ` Marin David Condic
2001-05-18 1:23 ` Robert A Duff
2001-05-19 7:40 ` David Kristola
2001-05-19 22:56 ` Robert A Duff
2001-05-19 8:36 ` Aaro Koskinen
2001-05-21 7:50 ` Jean-Pierre Rosen
2001-06-12 3:59 ` David Thompson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox