Auto merge of #9043 - dswij:9037-test, r=Manishearth

`extra_unused_lifetimes` add FP test case emitting from derived attributes.

Add test to cover for #9014 which is fixed in #9037.

changelog: [`extra_unused_lifetimes`] Add FP test case emitting from derived attributes.

---

Seeing the FP from the test:

```sh
$ git revert -m 1 1d1ae10876
$ TESTNAME=extra_unused_lifetime cargo uitest
```
This commit is contained in:
bors 2022-06-29 15:09:37 +00:00
commit 70f1d0d8fd
3 changed files with 32 additions and 6 deletions

View file

@ -72,3 +72,17 @@ pub fn mini_macro(_: TokenStream) -> TokenStream {
}
)
}
#[proc_macro_derive(ExtraLifetimeDerive)]
#[allow(unused)]
pub fn extra_lifetime(_input: TokenStream) -> TokenStream {
quote!(
pub struct ExtraLifetime;
impl<'b> ExtraLifetime {
pub fn something<'c>() -> Self {
Self
}
}
)
}

View file

@ -1,3 +1,5 @@
// aux-build:proc_macro_derive.rs
#![allow(
unused,
dead_code,
@ -7,6 +9,9 @@
)]
#![warn(clippy::extra_unused_lifetimes)]
#[macro_use]
extern crate proc_macro_derive;
fn empty() {}
fn used_lt<'a>(x: &'a u8) {}
@ -114,4 +119,11 @@ mod second_case {
}
}
// Should not lint
#[derive(ExtraLifetimeDerive)]
struct Human<'a> {
pub bones: i32,
pub name: &'a str,
}
fn main() {}

View file

@ -1,5 +1,5 @@
error: this lifetime isn't used in the function definition
--> $DIR/extra_unused_lifetimes.rs:14:14
--> $DIR/extra_unused_lifetimes.rs:19:14
|
LL | fn unused_lt<'a>(x: u8) {}
| ^^
@ -7,31 +7,31 @@ LL | fn unused_lt<'a>(x: u8) {}
= note: `-D clippy::extra-unused-lifetimes` implied by `-D warnings`
error: this lifetime isn't used in the function definition
--> $DIR/extra_unused_lifetimes.rs:41:10
--> $DIR/extra_unused_lifetimes.rs:46:10
|
LL | fn x<'a>(&self) {}
| ^^
error: this lifetime isn't used in the function definition
--> $DIR/extra_unused_lifetimes.rs:67:22
--> $DIR/extra_unused_lifetimes.rs:72:22
|
LL | fn unused_lt<'a>(x: u8) {}
| ^^
error: this lifetime isn't used in the impl
--> $DIR/extra_unused_lifetimes.rs:78:10
--> $DIR/extra_unused_lifetimes.rs:83:10
|
LL | impl<'a> std::ops::AddAssign<&Scalar> for &mut Scalar {
| ^^
error: this lifetime isn't used in the impl
--> $DIR/extra_unused_lifetimes.rs:84:10
--> $DIR/extra_unused_lifetimes.rs:89:10
|
LL | impl<'b> Scalar {
| ^^
error: this lifetime isn't used in the function definition
--> $DIR/extra_unused_lifetimes.rs:85:26
--> $DIR/extra_unused_lifetimes.rs:90:26
|
LL | pub fn something<'c>() -> Self {
| ^^