1 // revisions: noopt opt opt_with_overflow_checks
2 //[noopt]compile-flags: -C opt-level=0
3 //[opt]compile-flags: -O
4 //[opt_with_overflow_checks]compile-flags: -C overflow-checks=on -O
10 use std::{isize, i8, i16, i32, i64, i128};
14 assert!(thread::spawn(move|| { isize::MIN / -1; }).join().is_err());
15 //~^ ERROR arithmetic operation will overflow
16 assert!(thread::spawn(move|| { i8::MIN / -1; }).join().is_err());
17 //~^ ERROR arithmetic operation will overflow
18 assert!(thread::spawn(move|| { i16::MIN / -1; }).join().is_err());
19 //~^ ERROR arithmetic operation will overflow
20 assert!(thread::spawn(move|| { i32::MIN / -1; }).join().is_err());
21 //~^ ERROR arithmetic operation will overflow
22 assert!(thread::spawn(move|| { i64::MIN / -1; }).join().is_err());
23 //~^ ERROR arithmetic operation will overflow
24 assert!(thread::spawn(move|| { i128::MIN / -1; }).join().is_err());
25 //~^ ERROR arithmetic operation will overflow
26 assert!(thread::spawn(move|| { 1isize / 0; }).join().is_err());
27 //~^ ERROR operation will panic
28 assert!(thread::spawn(move|| { 1i8 / 0; }).join().is_err());
29 //~^ ERROR operation will panic
30 assert!(thread::spawn(move|| { 1i16 / 0; }).join().is_err());
31 //~^ ERROR operation will panic
32 assert!(thread::spawn(move|| { 1i32 / 0; }).join().is_err());
33 //~^ ERROR operation will panic
34 assert!(thread::spawn(move|| { 1i64 / 0; }).join().is_err());
35 //~^ ERROR operation will panic
36 assert!(thread::spawn(move|| { 1i128 / 0; }).join().is_err());
37 //~^ ERROR operation will panic
38 assert!(thread::spawn(move|| { isize::MIN % -1; }).join().is_err());
39 //~^ ERROR arithmetic operation will overflow
40 assert!(thread::spawn(move|| { i8::MIN % -1; }).join().is_err());
41 //~^ ERROR arithmetic operation will overflow
42 assert!(thread::spawn(move|| { i16::MIN % -1; }).join().is_err());
43 //~^ ERROR arithmetic operation will overflow
44 assert!(thread::spawn(move|| { i32::MIN % -1; }).join().is_err());
45 //~^ ERROR arithmetic operation will overflow
46 assert!(thread::spawn(move|| { i64::MIN % -1; }).join().is_err());
47 //~^ ERROR arithmetic operation will overflow
48 assert!(thread::spawn(move|| { i128::MIN % -1; }).join().is_err());
49 //~^ ERROR arithmetic operation will overflow
50 assert!(thread::spawn(move|| { 1isize % 0; }).join().is_err());
51 //~^ ERROR operation will panic
52 assert!(thread::spawn(move|| { 1i8 % 0; }).join().is_err());
53 //~^ ERROR operation will panic
54 assert!(thread::spawn(move|| { 1i16 % 0; }).join().is_err());
55 //~^ ERROR operation will panic
56 assert!(thread::spawn(move|| { 1i32 % 0; }).join().is_err());
57 //~^ ERROR operation will panic
58 assert!(thread::spawn(move|| { 1i64 % 0; }).join().is_err());
59 //~^ ERROR operation will panic
60 assert!(thread::spawn(move|| { 1i128 % 0; }).join().is_err());
61 //~^ ERROR operation will panic