1() = evalfile ("inc.sl");
2
3testing_feature ("literal integer overflow");
4
5private define check_overflow (str, overflow)
6{
7   try
8     {
9	() = eval (str + ";");
10	if (overflow)
11	  failed ("Expected %s to generate an overflow error", str);
12     }
13   catch AnyError:
14     {
15	if (overflow == 0)
16	  failed ("Obtained unexpected overflow error for %s", str);
17     }
18}
19if (Int16_Type == Short_Type)
20{
21   check_overflow ("123456h", 1);
22   check_overflow ("32768h", 1);
23   check_overflow ("-32768h", 0);
24   check_overflow ("65535hu", 0);
25   check_overflow ("0xFFFF1hu", 1);
26   check_overflow ("0xFFFFh", 0); % no sign overflow checked for hex literals
27   check_overflow ("0xFFFFhu", 0);
28}
29if (Int32_Type == Int_Type)
30{
31   check_overflow ("-2147483648", 0);
32   check_overflow ("2147483648", 1);
33   check_overflow ("4294967295U", 0);
34   check_overflow ("4294967296U", 1);
35   check_overflow ("0xFFFFFFFF", 0);
36   check_overflow ("0xFFFFFFFF1", 1);
37   check_overflow ("0xFFFFFFFF1U", 1);
38   check_overflow ("0xFFFFFFFFU", 0);
39}
40print ("Ok\n");
41
42exit (0);
43
44