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