]> git.lizzy.rs Git - rust.git/blob - src/test/ui/numbers-arithmetic/issue-8460.rs
Auto merge of #101893 - oli-obk:lift_derive, r=lcnr
[rust.git] / src / test / ui / numbers-arithmetic / issue-8460.rs
1 // run-pass
2 #![allow(unused_must_use)]
3 // ignore-emscripten no threads support
4 // needs-unwind
5 #![feature(rustc_attrs)]
6
7 use std::thread;
8
9 trait Int {
10     fn zero() -> Self;
11     fn one() -> Self;
12 }
13 macro_rules! doit {
14     ($($t:ident)*) => ($(impl Int for $t {
15         fn zero() -> Self { 0 }
16         fn one() -> Self { 1 }
17     })*)
18 }
19 doit! { i8 i16 i32 i64 isize }
20
21 macro_rules! check {
22     ($($e:expr),*) => {
23         $(assert!(thread::spawn({
24             move|| { $e; }
25         }).join().is_err());)*
26     }
27 }
28
29 fn main() {
30     check![
31         isize::MIN / -isize::one(),
32         i8::MIN / -i8::one(),
33         i16::MIN / -i16::one(),
34         i32::MIN / -i32::one(),
35         i64::MIN / -i64::one(),
36         1isize / isize::zero(),
37         1i8 / i8::zero(),
38         1i16 / i16::zero(),
39         1i32 / i32::zero(),
40         1i64 / i64::zero(),
41         isize::MIN % -isize::one(),
42         i8::MIN % -i8::one(),
43         i16::MIN % -i16::one(),
44         i32::MIN % -i32::one(),
45         i64::MIN % -i64::one(),
46         1isize % isize::zero(),
47         1i8 % i8::zero(),
48         1i16 % i16::zero(),
49         1i32 % i32::zero(),
50         1i64 % i64::zero()
51     ];
52 }