1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#![allow(clippy::assertions_on_constants, clippy::eq_op, clippy::let_unit_value)]
#![feature(inline_const)]
#![warn(clippy::unimplemented, clippy::unreachable, clippy::todo, clippy::panic)]
extern crate core;
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")
}
};
}
fn panic() {
let a = 2;
panic!();
//~^ ERROR: `panic` should not be present in production code
//~| NOTE: `-D clippy::panic` implied by `-D warnings`
panic!("message");
//~^ ERROR: `panic` should not be present in production code
panic!("{} {}", "panic with", "multiple arguments");
//~^ ERROR: `panic` should not be present in production code
let b = a + 2;
}
fn todo() {
let a = 2;
todo!();
//~^ ERROR: `todo` should not be present in production code
//~| NOTE: `-D clippy::todo` implied by `-D warnings`
todo!("message");
//~^ ERROR: `todo` should not be present in production code
todo!("{} {}", "panic with", "multiple arguments");
//~^ ERROR: `todo` should not be present in production code
let b = a + 2;
}
fn unimplemented() {
let a = 2;
unimplemented!();
//~^ ERROR: `unimplemented` should not be present in production code
//~| NOTE: `-D clippy::unimplemented` implied by `-D warnings`
unimplemented!("message");
//~^ ERROR: `unimplemented` should not be present in production code
unimplemented!("{} {}", "panic with", "multiple arguments");
//~^ ERROR: `unimplemented` should not be present in production code
let b = a + 2;
}
fn unreachable() {
let a = 2;
unreachable!();
//~^ ERROR: usage of the `unreachable!` macro
//~| NOTE: `-D clippy::unreachable` implied by `-D warnings`
unreachable!("message");
//~^ ERROR: usage of the `unreachable!` macro
unreachable!("{} {}", "panic with", "multiple arguments");
//~^ ERROR: usage of the `unreachable!` macro
let b = a + 2;
}
fn core_versions() {
use core::{panic, todo, unimplemented, unreachable};
panic!();
//~^ ERROR: `panic` should not be present in production code
todo!();
//~^ ERROR: `todo` should not be present in production code
unimplemented!();
//~^ ERROR: `unimplemented` should not be present in production code
unreachable!();
//~^ ERROR: usage of the `unreachable!` macro
}
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");
}
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");
}
fn main() {
panic();
todo();
unimplemented();
unreachable();
core_versions();
assert();
assert_msg();
debug_assert();
debug_assert_msg();
}
|