2022-05-05 14:12:52 +00:00
|
|
|
#![allow(clippy::assertions_on_constants, clippy::eq_op, clippy::let_unit_value)]
|
2022-04-07 17:39:59 +00:00
|
|
|
#![warn(clippy::unimplemented, clippy::unreachable, clippy::todo, clippy::panic)]
|
2019-10-16 17:43:26 +00:00
|
|
|
|
2020-11-17 20:16:15 +00:00
|
|
|
extern crate core;
|
|
|
|
|
2022-04-07 17:39:59 +00:00
|
|
|
const _: () = {
|
|
|
|
if 1 == 0 {
|
|
|
|
panic!("A balanced diet means a cupcake in each hand");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
fn inline_const() {
|
|
|
|
let _ = const {
|
|
|
|
if 1 == 0 {
|
|
|
|
panic!("When nothing goes right, go left")
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-10-16 17:43:26 +00:00
|
|
|
fn panic() {
|
|
|
|
let a = 2;
|
|
|
|
panic!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `panic` should not be present in production code
|
|
|
|
//~| NOTE: `-D clippy::panic` implied by `-D warnings`
|
2020-07-26 19:07:07 +00:00
|
|
|
panic!("message");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `panic` should not be present in production code
|
2020-07-26 19:07:07 +00:00
|
|
|
panic!("{} {}", "panic with", "multiple arguments");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `panic` should not be present in production code
|
2019-10-16 17:43:26 +00:00
|
|
|
let b = a + 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn todo() {
|
|
|
|
let a = 2;
|
|
|
|
todo!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `todo` should not be present in production code
|
|
|
|
//~| NOTE: `-D clippy::todo` implied by `-D warnings`
|
2020-07-26 19:07:07 +00:00
|
|
|
todo!("message");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `todo` should not be present in production code
|
2020-07-26 19:07:07 +00:00
|
|
|
todo!("{} {}", "panic with", "multiple arguments");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `todo` should not be present in production code
|
2019-10-16 17:43:26 +00:00
|
|
|
let b = a + 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn unimplemented() {
|
|
|
|
let a = 2;
|
|
|
|
unimplemented!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `unimplemented` should not be present in production code
|
|
|
|
//~| NOTE: `-D clippy::unimplemented` implied by `-D warnings`
|
2020-07-26 19:07:07 +00:00
|
|
|
unimplemented!("message");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `unimplemented` should not be present in production code
|
2020-07-26 19:07:07 +00:00
|
|
|
unimplemented!("{} {}", "panic with", "multiple arguments");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `unimplemented` should not be present in production code
|
2019-10-16 17:43:26 +00:00
|
|
|
let b = a + 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn unreachable() {
|
|
|
|
let a = 2;
|
|
|
|
unreachable!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: usage of the `unreachable!` macro
|
|
|
|
//~| NOTE: `-D clippy::unreachable` implied by `-D warnings`
|
2020-07-26 19:07:07 +00:00
|
|
|
unreachable!("message");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: usage of the `unreachable!` macro
|
2020-07-26 19:07:07 +00:00
|
|
|
unreachable!("{} {}", "panic with", "multiple arguments");
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: usage of the `unreachable!` macro
|
2019-10-16 17:43:26 +00:00
|
|
|
let b = a + 2;
|
|
|
|
}
|
|
|
|
|
2020-11-17 20:16:15 +00:00
|
|
|
fn core_versions() {
|
|
|
|
use core::{panic, todo, unimplemented, unreachable};
|
|
|
|
panic!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `panic` should not be present in production code
|
2020-11-17 20:16:15 +00:00
|
|
|
todo!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `todo` should not be present in production code
|
2020-11-17 20:16:15 +00:00
|
|
|
unimplemented!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: `unimplemented` should not be present in production code
|
2020-11-17 20:16:15 +00:00
|
|
|
unreachable!();
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: usage of the `unreachable!` macro
|
2020-11-17 20:16:15 +00:00
|
|
|
}
|
|
|
|
|
2021-07-15 08:44:10 +00:00
|
|
|
fn assert() {
|
|
|
|
assert!(true);
|
|
|
|
assert_eq!(true, true);
|
|
|
|
assert_ne!(true, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn assert_msg() {
|
|
|
|
assert!(true, "this should not panic");
|
|
|
|
assert_eq!(true, true, "this should not panic");
|
|
|
|
assert_ne!(true, false, "this should not panic");
|
|
|
|
}
|
|
|
|
|
2021-04-22 09:31:13 +00:00
|
|
|
fn debug_assert() {
|
|
|
|
debug_assert!(true);
|
|
|
|
debug_assert_eq!(true, true);
|
|
|
|
debug_assert_ne!(true, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn debug_assert_msg() {
|
|
|
|
debug_assert!(true, "test");
|
|
|
|
debug_assert_eq!(true, true, "test");
|
|
|
|
debug_assert_ne!(true, false, "test");
|
|
|
|
}
|
|
|
|
|
2019-10-16 17:43:26 +00:00
|
|
|
fn main() {
|
|
|
|
panic();
|
|
|
|
todo();
|
|
|
|
unimplemented();
|
|
|
|
unreachable();
|
2020-11-17 20:16:15 +00:00
|
|
|
core_versions();
|
2021-07-15 08:44:10 +00:00
|
|
|
assert();
|
|
|
|
assert_msg();
|
|
|
|
debug_assert();
|
|
|
|
debug_assert_msg();
|
2019-10-16 17:43:26 +00:00
|
|
|
}
|