comp.lang.ada
 help / color / mirror / Atom feed
* Range check for type 'Integer'
@ 2013-06-17 10:57 Peter Brooks
  2013-06-17 11:23 ` Simon Clubley
                   ` (2 more replies)
  0 siblings, 3 replies; 57+ messages in thread
From: Peter Brooks @ 2013-06-17 10:57 UTC (permalink / raw)


I may be confused about this, but I don't understand the behaviour of
a very simple Ada program.

Firstly, this program does what I do expect:

"
procedure Compute_Loop is
type fred is range -3276732787230772307 .. 3276732787230772307;

 procedure Double(Item : in out fred) is
 begin -- procedure Double.
   Item := Item * 2;
 end Double;

 X : fred := 1;   -- Local variable X of type fred.

begin -- procedure Compute_loop
 loop
  Put("This is ");
  Put(Integer(X));
  New_Line;
  Double(X);
 end loop;
end Compute_Loop;
"

Output:

...
This is   268435456
This is   536870912
This is  1073741824
This is

raised CONSTRAINT_ERROR : compute_loop.adb:19 range check failed

Exactly the same program, but using type 'Integer' instead for 'fred'
gives:


...
This is   134217728
This is   268435456
This is   536870912
This is  1073741824
This is -2147483648
This is           0
This is           0
This is           0
This is           0
This is           0
This is           0
This is           0
This is           0
..... [forever]

So the 'Integer' has rolled over to negative and then rolled back to 0
- but with no run-time error.

Why is there no range check error on type Integer?

^ permalink raw reply	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2013-06-23 14:43 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-17 10:57 Range check for type 'Integer' Peter Brooks
2013-06-17 11:23 ` Simon Clubley
2013-06-17 11:54   ` Simon Wright
2013-06-17 12:55   ` Peter Brooks
2013-06-17 13:28     ` Shark8
2013-06-17 13:45       ` Peter Brooks
2013-06-17 21:16         ` Shark8
2013-06-18 10:48     ` Stephen Leake
2013-06-17 12:46 ` Dmitry A. Kazakov
2013-06-17 13:23 ` Bug in 'gnatmake' (Was: Range check for type 'Integer') Jacob Sparre Andersen
2013-06-17 13:32   ` Bug in 'gnatmake' Jacob Sparre Andersen
2013-06-17 16:50   ` Bug in 'gnatmake' (Was: Range check for type 'Integer') Robert A Duff
2013-06-17 19:15     ` Peter Brooks
2013-06-17 21:09       ` Shark8
2013-06-17 21:22       ` Jeffrey Carter
2013-06-18  1:21         ` Peter Brooks
2013-06-18  6:33           ` Jeffrey Carter
2013-06-18  7:29       ` Georg Bauhaus
2013-06-17 18:49   ` Bug in 'gnatmake' Simon Wright
2013-06-18  9:09     ` Elaboration order handling (Was: Bug in 'gnatmake') Jacob Sparre Andersen
2013-06-18 17:09       ` Robert A Duff
2013-06-18 22:52         ` Adam Beneschan
2013-06-19  1:21           ` Jeffrey Carter
2013-06-19 12:38             ` Robert A Duff
2013-06-19 20:43               ` Georg Bauhaus
2013-06-20  0:37                 ` Robert A Duff
2013-06-20 19:56                   ` Georg Bauhaus
2013-06-19 12:22           ` Robert A Duff
2013-06-19 15:46             ` Adam Beneschan
2013-06-19 16:41               ` Robert A Duff
2013-06-19 20:47               ` Georg Bauhaus
2013-06-19 21:36                 ` Adam Beneschan
2013-06-20  0:57                 ` Robert A Duff
2013-06-20  1:09                   ` Jeffrey Carter
2013-06-20  2:29                     ` Adam Beneschan
2013-06-20  6:08                       ` Jeffrey Carter
2013-06-20 15:11                     ` Robert A Duff
2013-06-21  5:26                       ` Jeffrey Carter
2013-06-21 15:48                         ` Adam Beneschan
2013-06-21 18:35                           ` Jeffrey Carter
2013-06-21 19:10                             ` Robert A Duff
2013-06-21 21:27                               ` Jeffrey Carter
2013-06-21 20:43                             ` Adam Beneschan
2013-06-21 21:44                               ` Jeffrey Carter
2013-06-21 23:47                                 ` Robert A Duff
2013-06-23 14:43                                   ` AdaMagica
2013-06-21 18:58                         ` null declarative parts (was: Re: Elaboration order handling) Robert A Duff
2013-06-21 20:42                           ` null declarative parts Georg Bauhaus
2013-06-20  2:11                   ` Elaboration order handling (Was: Bug in 'gnatmake') Adam Beneschan
2013-06-20 14:44                     ` Robert A Duff
2013-06-20 11:24                   ` G.B.
2013-06-20 15:23                     ` Robert A Duff
2013-06-19 21:00             ` Georg Bauhaus
2013-06-19 22:26             ` Randy Brukardt
2013-06-20  0:31               ` Robert A Duff
2013-06-20 21:36                 ` Randy Brukardt
2013-06-19 13:07         ` Bill Findlay

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