]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
0bf4aa26 | 2 | #![allow(unused_must_use)] |
7453a54e | 3 | // ignore-emscripten no threads support |
cc61c64b | 4 | #![feature(rustc_attrs)] |
c34b1796 | 5 | |
85aaf69f SL |
6 | use std::thread; |
7 | ||
cc61c64b XL |
8 | trait Int { |
9 | fn zero() -> Self; | |
10 | fn one() -> Self; | |
11 | } | |
12 | macro_rules! doit { | |
13 | ($($t:ident)*) => ($(impl Int for $t { | |
46de9a89 FG |
14 | fn zero() -> Self { 0 } |
15 | fn one() -> Self { 1 } | |
cc61c64b XL |
16 | })*) |
17 | } | |
18 | doit! { i8 i16 i32 i64 isize } | |
19 | ||
54a0048b SL |
20 | macro_rules! check { |
21 | ($($e:expr),*) => { | |
22 | $(assert!(thread::spawn({ | |
54a0048b SL |
23 | move|| { $e; } |
24 | }).join().is_err());)* | |
25 | } | |
26 | } | |
27 | ||
1a4d82fc | 28 | fn main() { |
54a0048b | 29 | check![ |
72b1a166 FG |
30 | isize::MIN / -isize::one(), |
31 | i8::MIN / -i8::one(), | |
32 | i16::MIN / -i16::one(), | |
33 | i32::MIN / -i32::one(), | |
34 | i64::MIN / -i64::one(), | |
54a0048b SL |
35 | 1isize / isize::zero(), |
36 | 1i8 / i8::zero(), | |
37 | 1i16 / i16::zero(), | |
38 | 1i32 / i32::zero(), | |
39 | 1i64 / i64::zero(), | |
72b1a166 FG |
40 | isize::MIN % -isize::one(), |
41 | i8::MIN % -i8::one(), | |
42 | i16::MIN % -i16::one(), | |
43 | i32::MIN % -i32::one(), | |
44 | i64::MIN % -i64::one(), | |
54a0048b SL |
45 | 1isize % isize::zero(), |
46 | 1i8 % i8::zero(), | |
47 | 1i16 % i16::zero(), | |
48 | 1i32 % i32::zero(), | |
49 | 1i64 % i64::zero() | |
50 | ]; | |
1a4d82fc | 51 | } |