comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jeffrey.carter@boeing.com>
Subject: Re: constrained subtypes
Date: Tue, 12 Mar 2002 16:42:03 GMT
Date: 2002-03-12T16:42:03+00:00	[thread overview]
Message-ID: <3C8E2FDB.5E48CB9@boeing.com> (raw)
In-Reply-To: 3c8dcc9d$1@pull.gecm.com

George Stevens wrote:
> 
> Problem seemed to be in using:
> 
> case (constrained_subtype)
> 
> rather than:
> 
> case constrained_subtype
> 
> Removing the brackets sorted the problem.  Not sure why this is a problem
> for constrained subtypes, as the compilers cope fine for enums and (base)
> integers.

With parentheses, you have an expression, which is of the unconstrained
base subtype (Integer'Base), not the constrained subtype. Expressions
are always evaluated using the unconstrained base type. This allows
things such as

subtype X is Integer range 1 .. 8;
Y : Integer := 16;
Z : X;
...
Z := Y / 2;
Y := 3 * Z;

to be legal. "Y / 2" is not necessarily in X, so a constraint check is
performed before assignment. "3 * Z" is not of subtype X, but is legal,
even though Z is of subtype X, because it is an expression.

This is why "case Z" and "case (Z)" are different. "Case Y" and "case
(Y)" cover the same range, so you don't see a difference (though it's
there).

-- 
Jeffrey Carter



  parent reply	other threads:[~2002-03-12 16:42 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-11 15:00 constrained subtypes George Stevens
2002-03-11 16:16 ` Stephen Leake
2002-03-11 16:50 ` Jeffrey Carter
2002-03-11 21:05 ` Anh_Vo
2002-03-12  9:39 ` George Stevens
2002-03-12 10:38   ` Martin Dowie
2002-03-12 11:57     ` George Stevens
2002-03-12 12:02       ` Martin Dowie
2002-03-12 12:03       ` Martin Dowie
2002-03-12 16:42   ` Jeffrey Carter [this message]
2002-03-13 22:09 ` Wannabe h4x0r
  -- strict thread matches above, loose matches on Subject: below --
2002-03-12  7:59 Christoph Grein
2002-03-12 10:37 Christoph Grein
2002-03-13  6:22 Christoph Grein
2002-03-13 14:18 ` Robert Dewar
2002-03-14 11:01 Christoph Grein
replies disabled

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