]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-8460-const.rs
53005e46d2f47234372d58d1a27a02816a23f63f
[rust.git] / src / test / ui / issues / issue-8460-const.rs
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
5
6 // build-fail
7
8 #![deny(const_err)]
9
10 use std::{isize, i8, i16, i32, i64, i128};
11 use std::thread;
12
13 fn main() {
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
62 }