From 0f3dcdc3aad5527049c6cfcfae8bd3d697c26447 Mon Sep 17 00:00:00 2001 From: Wilco Kusee Date: Thu, 27 Dec 2018 09:54:19 +0100 Subject: [PATCH] Document known problems --- clippy_lints/src/use_self.rs | 8 +++++++- tests/ui/use_self.rs | 5 ++--- tests/ui/use_self.stderr | 30 +++++++++++++++--------------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/clippy_lints/src/use_self.rs b/clippy_lints/src/use_self.rs index 653b6630b3c9..d08a89314199 100644 --- a/clippy_lints/src/use_self.rs +++ b/clippy_lints/src/use_self.rs @@ -25,7 +25,13 @@ use syntax_pos::symbol::keywords::SelfUpper; /// name /// feels inconsistent. /// -/// **Known problems:** None. +/// **Known problems:** +/// - Does not trigger within locally defined macros (#2098) +/// - False positive when using associated types (#2843) +/// - False positives in some situations when using generics (#3410) +/// - False positive when type from outer function can't be used (#3463) +/// - Does not diagnose tuple structs (#3498) +/// - Does not trigger in lifetimed struct /// /// **Example:** /// ```rust diff --git a/tests/ui/use_self.rs b/tests/ui/use_self.rs index c21df403035f..561d2418228e 100644 --- a/tests/ui/use_self.rs +++ b/tests/ui/use_self.rs @@ -51,8 +51,6 @@ mod better { } } -//todo the lint does not handle lifetimed struct -//the following module should trigger the lint on the third method only mod lifetimes { struct Foo<'a> { foo_str: &'a str, @@ -69,7 +67,8 @@ mod lifetimes { Foo { foo_str: "foo" } } - // `Self` is applicable here + // TODO: the lint does not handle lifetimed struct + // `Self` should be applicable here fn clone(&self) -> Foo<'a> { Foo { foo_str: self.foo_str } } diff --git a/tests/ui/use_self.stderr b/tests/ui/use_self.stderr index 82b44d424df5..bb81ad799005 100644 --- a/tests/ui/use_self.stderr +++ b/tests/ui/use_self.stderr @@ -37,91 +37,91 @@ LL | Foo::new() | ^^^^^^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:96:22 + --> $DIR/use_self.rs:95:22 | LL | fn refs(p1: &Bad) -> &Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:96:31 + --> $DIR/use_self.rs:95:31 | LL | fn refs(p1: &Bad) -> &Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:100:37 + --> $DIR/use_self.rs:99:37 | LL | fn ref_refs<'a>(p1: &'a &'a Bad) -> &'a &'a Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:100:53 + --> $DIR/use_self.rs:99:53 | LL | fn ref_refs<'a>(p1: &'a &'a Bad) -> &'a &'a Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:104:30 + --> $DIR/use_self.rs:103:30 | LL | fn mut_refs(p1: &mut Bad) -> &mut Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:104:43 + --> $DIR/use_self.rs:103:43 | LL | fn mut_refs(p1: &mut Bad) -> &mut Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:108:28 + --> $DIR/use_self.rs:107:28 | LL | fn nested(_p1: Box, _p2: (&u8, &Bad)) {} | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:108:46 + --> $DIR/use_self.rs:107:46 | LL | fn nested(_p1: Box, _p2: (&u8, &Bad)) {} | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:110:20 + --> $DIR/use_self.rs:109:20 | LL | fn vals(_: Bad) -> Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:110:28 + --> $DIR/use_self.rs:109:28 | LL | fn vals(_: Bad) -> Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:111:13 + --> $DIR/use_self.rs:110:13 | LL | Bad::default() | ^^^^^^^^^^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:116:23 + --> $DIR/use_self.rs:115:23 | LL | type Output = Bad; | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:118:27 + --> $DIR/use_self.rs:117:27 | LL | fn mul(self, rhs: Bad) -> Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:118:35 + --> $DIR/use_self.rs:117:35 | LL | fn mul(self, rhs: Bad) -> Bad { | ^^^ help: use the applicable keyword: `Self` error: unnecessary structure name repetition - --> $DIR/use_self.rs:210:56 + --> $DIR/use_self.rs:209:56 | LL | fn bad(foos: &[Self]) -> impl Iterator { | ^^^ help: use the applicable keyword: `Self`