Files
rust/tests/ui/let_underscore_must_use.rs

113 lines
1.6 KiB
Rust
Raw Normal View History

#![warn(clippy::let_underscore_must_use)]
2020-11-18 01:01:22 +09:00
#![allow(clippy::unnecessary_wraps)]
// Debug implementations can fire this lint,
// so we shouldn't lint external macros
#[derive(Debug)]
struct Foo {
field: i32,
}
#[must_use]
fn f() -> u32 {
0
}
fn g() -> Result<u32, u32> {
Ok(0)
}
#[must_use]
fn l<T>(x: T) -> T {
x
}
fn h() -> u32 {
0
}
2022-03-27 14:41:09 +02:00
struct S;
impl S {
#[must_use]
pub fn f(&self) -> u32 {
0
}
pub fn g(&self) -> Result<u32, u32> {
Ok(0)
}
fn k(&self) -> u32 {
0
}
#[must_use]
fn h() -> u32 {
0
}
fn p() -> Result<u32, u32> {
Ok(0)
}
}
trait Trait {
#[must_use]
fn a() -> u32;
}
impl Trait for S {
fn a() -> u32 {
0
}
}
fn main() {
let _ = f();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = g();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = h();
let _ = l(0_u32);
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let s = S {};
let _ = s.f();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = s.g();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = s.k();
let _ = S::h();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = S::p();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = S::a();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = if true { Ok(()) } else { Err(()) };
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let a = Result::<(), ()>::Ok(());
let _ = a.is_ok();
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = a.map(|_| ());
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
let _ = a;
2025-02-11 17:57:08 +01:00
//~^ let_underscore_must_use
#[allow(clippy::let_underscore_must_use)]
let _ = a;
}