| // revisions: noopt opt opt_with_overflow_checks |
| //[noopt]compile-flags: -C opt-level=0 |
| //[opt]compile-flags: -O |
| //[opt_with_overflow_checks]compile-flags: -C overflow-checks=on -O |
| |
| // build-pass |
| // ignore-pass (test emits codegen-time warnings and verifies that they are not errors) |
| |
| #![warn(const_err, arithmetic_overflow, unconditional_panic)] |
| |
| fn main() { |
| println!("{}", 0u32 - 1); |
| //[opt_with_overflow_checks,noopt]~^ WARN [arithmetic_overflow] |
| let _x = 0u32 - 1; |
| //~^ WARN [arithmetic_overflow] |
| println!("{}", 1 / (1 - 1)); |
| //~^ WARN [unconditional_panic] |
| //~| WARN panic or abort [const_err] |
| //~| WARN erroneous constant used [const_err] |
| let _x = 1 / (1 - 1); |
| //~^ WARN [unconditional_panic] |
| println!("{}", 1 / (false as u32)); |
| //~^ WARN [unconditional_panic] |
| //~| WARN panic or abort [const_err] |
| //~| WARN erroneous constant used [const_err] |
| let _x = 1 / (false as u32); |
| //~^ WARN [unconditional_panic] |
| } |