comp.lang.ada
 help / color / mirror / Atom feed
From: "Jean-Pierre Rosen" <rosen@adalog.fr>
Subject: Re: How to get a compilation error
Date: Thu, 15 Nov 2001 16:09:50 +0100
Date: 2001-11-15T16:09:50+01:00	[thread overview]
Message-ID: <9t0mm9$hq8$1@s1.read.news.oleane.net> (raw)
In-Reply-To: 3bf3d68c$1@pull.gecm.com

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1491 bytes --]


"Martin Dowie" <martin.dowie@nospam.baesystems.com> a �crit dans le message news: 3bf3d68c$1@pull.gecm.com...
> "Wilhelm Spickermann" <wilhelm.spickermann@t-online.de> wrote in message
> news:mailman.1005833842.603.comp.lang.ada@ada.eu.org...
> Hi,
>
> I would like to get a compilation *error*, if some compile time
> constant is not suitable for the algorithm in use. Example:
>
> Chunk_Bits : constant :=
>   Integer'Min (32, System.Max_Binary_Modulus / 2);
> type Check is (Checkitem1, Checkitem2);
> for Check'SIZE use 1 - Integer'MIN (96 mod Chunk_Bits, 1);
>
> The last two lines result in a compilation error, if and (I
> hope) only if 96 is not a multiple of Chunk_Bits. That�s what I
> want -- but it�s really ugly. Does anyone have something better?
>
>
> Could try:
>
>    type A_Valid_Range is range 0 .. 0;
>
>    My_Check : constant A_Valid_Range :=
>       A_Valid_Range (96 mod (Integer'Min (32, System.Max_Binary_Modulus /
> 2)));
>
> This will probably raise a warning rather than an error though.
> Some compilers will let you specify that warning are to be
> treated as errors.
To get an error, do the following:
subtype Assert is boolean range True..True;
Check : constant := Assert'Pos(96 rem Chunk_Bits = 0)

Since Check is a named number, an invalid value will result in a compile time error (new in 95).

--
---------------------------------------------------------
           J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr





  reply	other threads:[~2001-11-15 15:09 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-15 14:16 How to get a compilation error Wilhelm Spickermann
2001-11-15 15:06 ` Martin Dowie
2001-11-15 15:09   ` Jean-Pierre Rosen [this message]
2001-11-15 17:38     ` Wilhelm Spickermann
2001-11-16  8:19       ` Jean-Pierre Rosen
2001-11-16  9:44         ` Wilhelm Spickermann
2001-11-16 10:22         ` Pi
2001-11-16 17:27           ` Wilhelm Spickermann
2001-11-15 23:49     ` martin.m.dowie
2001-11-16  9:05     ` Wilhelm Spickermann
2001-11-15 17:47   ` Wilhelm Spickermann
  -- strict thread matches above, loose matches on Subject: below --
2001-11-16  8:23 Gautier Write-only-address
     [not found] <mailman.1005975714.13778.comp.lang.ada@ada.eu.org>
2001-11-17 11:32 ` Preben Randhol
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox