mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-16 13:05:18 +03:00
e9ede27a5d
These were probably added automatically to avoid code churn. I'd like to get rid of them bit by bit, so here's the first bit
268 lines
4.9 KiB
Rust
268 lines
4.9 KiB
Rust
#![warn(clippy::match_single_binding)]
|
|
#![allow(
|
|
unused,
|
|
clippy::let_unit_value,
|
|
clippy::no_effect,
|
|
clippy::toplevel_ref_arg,
|
|
clippy::useless_vec
|
|
)]
|
|
|
|
struct Point {
|
|
x: i32,
|
|
y: i32,
|
|
}
|
|
|
|
fn coords() -> Point {
|
|
Point { x: 1, y: 2 }
|
|
}
|
|
|
|
macro_rules! foo {
|
|
($param:expr) => {
|
|
match $param {
|
|
_ => println!("whatever"),
|
|
}
|
|
};
|
|
}
|
|
|
|
fn main() {
|
|
let a = 1;
|
|
let b = 2;
|
|
let c = 3;
|
|
// Lint
|
|
let (x, y, z) = (a, b, c);
|
|
{
|
|
println!("{x} {y} {z}");
|
|
}
|
|
// Lint
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {y} {z}");
|
|
// Ok
|
|
foo!(a);
|
|
// Ok
|
|
match a {
|
|
2 => println!("2"),
|
|
_ => println!("Not 2"),
|
|
}
|
|
// Ok
|
|
let d = Some(5);
|
|
match d {
|
|
Some(d) => println!("{d}"),
|
|
_ => println!("None"),
|
|
}
|
|
// Lint
|
|
println!("whatever");
|
|
// Lint
|
|
{
|
|
let x = 29;
|
|
println!("x has a value of {x}");
|
|
}
|
|
// Lint
|
|
{
|
|
let e = 5 * a;
|
|
if e >= 5 {
|
|
println!("e is superior to 5");
|
|
}
|
|
}
|
|
// Lint
|
|
let p = Point { x: 0, y: 7 };
|
|
let Point { x, y } = p;
|
|
println!("Coords: ({x}, {y})");
|
|
// Lint
|
|
let Point { x: x1, y: y1 } = p;
|
|
println!("Coords: ({x1}, {y1})");
|
|
// Lint
|
|
let x = 5;
|
|
let ref r = x;
|
|
println!("Got a reference to {r}");
|
|
// Lint
|
|
let mut x = 5;
|
|
let ref mut mr = x;
|
|
println!("Got a mutable reference to {mr}");
|
|
// Lint
|
|
let Point { x, y } = coords();
|
|
let product = x * y;
|
|
// Lint
|
|
let v = vec![Some(1), Some(2), Some(3), Some(4)];
|
|
#[allow(clippy::let_and_return)]
|
|
let _ = v
|
|
.iter()
|
|
.map(|i| {
|
|
let unwrapped = i.unwrap();
|
|
unwrapped
|
|
})
|
|
.collect::<Vec<u8>>();
|
|
// Ok
|
|
let x = 1;
|
|
match x {
|
|
#[cfg(disabled_feature)]
|
|
0 => println!("Disabled branch"),
|
|
_ => println!("Enabled branch"),
|
|
}
|
|
|
|
// Ok
|
|
let x = 1;
|
|
let y = 1;
|
|
match match y {
|
|
0 => 1,
|
|
_ => 2,
|
|
} {
|
|
#[cfg(disabled_feature)]
|
|
0 => println!("Array index start"),
|
|
_ => println!("Not an array index start"),
|
|
}
|
|
|
|
// Lint
|
|
let x = 1;
|
|
println!("Not an array index start")
|
|
}
|
|
|
|
fn issue_8723() {
|
|
let (mut val, idx) = ("a b", 1);
|
|
|
|
let (pre, suf) = val.split_at(idx);
|
|
val = {
|
|
println!("{pre}");
|
|
suf
|
|
};
|
|
|
|
let _ = val;
|
|
}
|
|
|
|
fn side_effects() {}
|
|
|
|
fn issue_9575() {
|
|
let _ = || {
|
|
side_effects();
|
|
println!("Needs curlies")
|
|
};
|
|
}
|
|
|
|
fn issue_9725(r: Option<u32>) {
|
|
let x = r;
|
|
match x {
|
|
Some(_) => {
|
|
println!("Some");
|
|
},
|
|
None => {
|
|
println!("None");
|
|
},
|
|
};
|
|
}
|
|
|
|
fn issue_10447() -> usize {
|
|
();
|
|
|
|
let a = ();
|
|
|
|
side_effects();
|
|
|
|
let b = side_effects();
|
|
|
|
println!("1");
|
|
|
|
let c = println!("1");
|
|
|
|
let in_expr = [
|
|
(),
|
|
side_effects(),
|
|
println!("1"),
|
|
];
|
|
|
|
2
|
|
}
|
|
|
|
fn issue14634() {
|
|
macro_rules! id {
|
|
($i:ident) => {
|
|
$i
|
|
};
|
|
}
|
|
dbg!(3);
|
|
println!("here");
|
|
//~^^^ match_single_binding
|
|
let id!(a) = dbg!(3);
|
|
println!("found {a}");
|
|
//~^^^ match_single_binding
|
|
let id!(b) = dbg!(3);
|
|
let id!(_a) = dbg!(b + 1);
|
|
//~^^^ match_single_binding
|
|
}
|
|
|
|
mod issue14991 {
|
|
struct AnnoConstWOBlock {
|
|
inner: [(); {
|
|
let _n = 1;
|
|
42
|
|
}],
|
|
}
|
|
|
|
struct AnnoConstWBlock {
|
|
inner: [(); {
|
|
let _n = 1;
|
|
42
|
|
}],
|
|
}
|
|
}
|
|
|
|
mod issue15018 {
|
|
fn used_later(a: i32, b: i32, c: i32) {
|
|
let x = 1;
|
|
{
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {y} {z}");
|
|
}
|
|
println!("x = {x}");
|
|
}
|
|
|
|
fn not_used_later(a: i32, b: i32, c: i32) {
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {y} {z}")
|
|
}
|
|
|
|
#[allow(irrefutable_let_patterns)]
|
|
fn not_used_later_but_shadowed(a: i32, b: i32, c: i32) {
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {y} {z}");
|
|
let x = 1;
|
|
println!("x = {x}");
|
|
}
|
|
|
|
#[allow(irrefutable_let_patterns)]
|
|
fn not_used_later_but_shadowed_nested(a: i32, b: i32, c: i32) {
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {x} {y}");
|
|
if let (x, y, z) = (a, b, c) {
|
|
println!("{x} {y} {z}")
|
|
}
|
|
|
|
{
|
|
let x: i32 = 1;
|
|
{
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {y} {z}");
|
|
}
|
|
if let (x, y, z) = (a, x, c) {
|
|
println!("{x} {y} {z}")
|
|
}
|
|
}
|
|
|
|
{
|
|
let (x, y, z) = (a, b, c);
|
|
println!("{x} {y} {z}");
|
|
let fn_ = |y| {
|
|
println!("{a} {b} {y}");
|
|
};
|
|
fn_(c);
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(clippy::short_circuit_statement)]
|
|
fn issue15269(a: usize, b: usize, c: usize) -> bool {
|
|
a < b
|
|
&& b < c;
|
|
|
|
a < b
|
|
&& b < c
|
|
}
|