diff --git a/tests/ui/issue_4266.rs b/tests/ui/issue_4266.rs new file mode 100644 index 000000000000..dbf482ea11ae --- /dev/null +++ b/tests/ui/issue_4266.rs @@ -0,0 +1,24 @@ +// compile-flags: --edition 2018 +#![feature(async_await)] +#![allow(dead_code)] + +async fn sink1<'a>(_: &'a str) {} // lint +async fn sink1_elided(_: &str) {} // ok + +async fn one_to_one<'a>(s: &'a str) -> &'a str { s } // lint +async fn one_to_one_elided(s: &str) -> &str { s } // ok +async fn all_to_one<'a>(a: &'a str, _b: &'a str) -> &'a str { a } // ok +// async fn unrelated(_: &str, _: &str) {} // Not allowed in async fn + +// #3988 +struct Foo; +impl Foo { + pub async fn foo(&mut self) {} // ok +} + +// rust-lang/rust#61115 +async fn print(s: &str) { // ok + println!("{}", s); +} + +fn main() {} diff --git a/tests/ui/issue_4266.stderr b/tests/ui/issue_4266.stderr new file mode 100644 index 000000000000..3c9740c4a222 --- /dev/null +++ b/tests/ui/issue_4266.stderr @@ -0,0 +1,16 @@ +error: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) + --> $DIR/issue_4266.rs:5:1 + | +LL | async fn sink1<'a>(_: &'a str) {} // lint + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: `-D clippy::needless-lifetimes` implied by `-D warnings` + +error: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) + --> $DIR/issue_4266.rs:8:1 + | +LL | async fn one_to_one<'a>(s: &'a str) -> &'a str { s } // lint + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 2 previous errors +