//@ run-pass | |
//@ compile-flags: -C debug_assertions=true | |
//@ needs-unwind | |
//@ ignore-emscripten dies with an LLVM error | |
use std::panic; | |
fn main() { | |
macro_rules! overflow_test { | |
($t:ident) => ( | |
let r = panic::catch_unwind(|| { | |
($t::MAX).next_power_of_two() | |
}); | |
assert!(r.is_err()); | |
let r = panic::catch_unwind(|| { | |
(($t::MAX >> 1) + 2).next_power_of_two() | |
}); | |
assert!(r.is_err()); | |
) | |
} | |
overflow_test!(u8); | |
overflow_test!(u16); | |
overflow_test!(u32); | |
overflow_test!(u64); | |
overflow_test!(u128); | |
} |