Document known problems

This commit is contained in:
Wilco Kusee 2018-12-27 09:54:19 +01:00
parent ece8b8e7d6
commit 0f3dcdc3aa
3 changed files with 24 additions and 19 deletions

View File

@ -25,7 +25,13 @@
/// name /// name
/// feels inconsistent. /// 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:** /// **Example:**
/// ```rust /// ```rust

View File

@ -51,8 +51,6 @@ fn default() -> Self {
} }
} }
//todo the lint does not handle lifetimed struct
//the following module should trigger the lint on the third method only
mod lifetimes { mod lifetimes {
struct Foo<'a> { struct Foo<'a> {
foo_str: &'a str, foo_str: &'a str,
@ -69,7 +67,8 @@ fn bar() -> Foo<'static> {
Foo { foo_str: "foo" } 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> { fn clone(&self) -> Foo<'a> {
Foo { foo_str: self.foo_str } Foo { foo_str: self.foo_str }
} }

View File

@ -37,91 +37,91 @@ LL | Foo::new()
| ^^^^^^^^ help: use the applicable keyword: `Self` | ^^^^^^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:96:22 --> $DIR/use_self.rs:95:22
| |
LL | fn refs(p1: &Bad) -> &Bad { LL | fn refs(p1: &Bad) -> &Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:96:31 --> $DIR/use_self.rs:95:31
| |
LL | fn refs(p1: &Bad) -> &Bad { LL | fn refs(p1: &Bad) -> &Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition 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 { LL | fn ref_refs<'a>(p1: &'a &'a Bad) -> &'a &'a Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition 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 { LL | fn ref_refs<'a>(p1: &'a &'a Bad) -> &'a &'a Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition 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 { LL | fn mut_refs(p1: &mut Bad) -> &mut Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition 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 { LL | fn mut_refs(p1: &mut Bad) -> &mut Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:108:28 --> $DIR/use_self.rs:107:28
| |
LL | fn nested(_p1: Box<Bad>, _p2: (&u8, &Bad)) {} LL | fn nested(_p1: Box<Bad>, _p2: (&u8, &Bad)) {}
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:108:46 --> $DIR/use_self.rs:107:46
| |
LL | fn nested(_p1: Box<Bad>, _p2: (&u8, &Bad)) {} LL | fn nested(_p1: Box<Bad>, _p2: (&u8, &Bad)) {}
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:110:20 --> $DIR/use_self.rs:109:20
| |
LL | fn vals(_: Bad) -> Bad { LL | fn vals(_: Bad) -> Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:110:28 --> $DIR/use_self.rs:109:28
| |
LL | fn vals(_: Bad) -> Bad { LL | fn vals(_: Bad) -> Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:111:13 --> $DIR/use_self.rs:110:13
| |
LL | Bad::default() LL | Bad::default()
| ^^^^^^^^^^^^ help: use the applicable keyword: `Self` | ^^^^^^^^^^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:116:23 --> $DIR/use_self.rs:115:23
| |
LL | type Output = Bad; LL | type Output = Bad;
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:118:27 --> $DIR/use_self.rs:117:27
| |
LL | fn mul(self, rhs: Bad) -> Bad { LL | fn mul(self, rhs: Bad) -> Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:118:35 --> $DIR/use_self.rs:117:35
| |
LL | fn mul(self, rhs: Bad) -> Bad { LL | fn mul(self, rhs: Bad) -> Bad {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`
error: unnecessary structure name repetition error: unnecessary structure name repetition
--> $DIR/use_self.rs:210:56 --> $DIR/use_self.rs:209:56
| |
LL | fn bad(foos: &[Self]) -> impl Iterator<Item = &Foo> { LL | fn bad(foos: &[Self]) -> impl Iterator<Item = &Foo> {
| ^^^ help: use the applicable keyword: `Self` | ^^^ help: use the applicable keyword: `Self`