comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jeffrey.carter@boeing.com>
Subject: Re: Static assertions
Date: Fri, 18 May 2001 22:46:20 GMT
Date: 2001-05-18T22:46:20+00:00	[thread overview]
Message-ID: <3B05A63C.25F6B80C@boeing.com> (raw)
In-Reply-To: wccwv7e5ow3.fsf@world.std.com

Robert A Duff wrote:
> 
> Jeffrey Carter <jeffrey.carter@boeing.com> writes:
> 
> > However, is there any reason to write
> >
> >    Assert_1 : constant := Boolean'Pos (Assert'(Integer'Size = 73) );
> >
> > rather than
> >
> >    Assert_1 : constant Assert := Integer'Size = 73;
> >
> > ? Are there compilers that won't check this during compilation?
> 
> I think the former is required to get a compile time error,
> whereas the latter is merely allowed to produce a warning.
> The subtle difference is that the former has a static expression
> raising an exception, whereas the latter has a perfectly good
> static expression, but the assignment will raise an exception.
> I'm too lazy to look it up in the RM, so I could be mistaken...
> 
> Furthermore, if the second one doesn't get detected at compile time, it
> might not get detected at all.  I believe 11.6 allows the compiler to
> "optimize away" the constraint check, so it never happens at run time.
> (I'm assuming Assert_1 is a dead variable.)

I see. Assert_1 cannot be a dead variable, since it is a constant, but
it will probably never be referenced. I guess it's a "dead constant".

It would appear that

   Assert_1 : constant Assert := Assert'(Integer'Size = 73);

must cause a compilation error, since Assert is a static subtype, so the
qualified expression is static, and a static qualified expression must
be evaluated at compile time.

I'm just trying to come up with something a little shorter and less
obscure than using Boolean'Pos.

-- 
Jeffrey Carter



  reply	other threads:[~2001-05-18 22:46 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
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 [this message]
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