rust/tests/ui/numbers-arithmetic/overflowing-neg-nonzero.rs
John Millikin 4e2797dd76 Implement Neg for signed non-zero integers.
Negating a non-zero integer currently requires unpacking to a
primitive and re-wrapping. Since negation of non-zero signed
integers always produces a non-zero result, it is safe to
implement `Neg` for `NonZeroI{N}`.

The new `impl` is marked as stable because trait implementations
for two stable types can't be marked unstable.
2023-04-20 14:27:29 +09:00

13 lines
282 B
Rust

// run-fail
// error-pattern:thread 'main' panicked at 'attempt to negate with overflow'
// ignore-emscripten no processes
// compile-flags: -C debug-assertions
#![allow(arithmetic_overflow)]
use std::num::NonZeroI8;
fn main() {
let _x = -NonZeroI8::new(i8::MIN).unwrap();
}