Skip to content

Commit

Permalink
wrong_self_convention: Enhance lint message
Browse files Browse the repository at this point in the history
  • Loading branch information
mgacek8 committed Mar 19, 2021
1 parent 032cdfe commit 39cabcd
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 31 deletions.
11 changes: 7 additions & 4 deletions clippy_lints/src/methods/wrong_self_convention.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,12 @@ impl fmt::Display for Convention {
Self::StartsWith(this) => this.fmt(f).and_then(|_| '*'.fmt(f)),
Self::EndsWith(this) => '*'.fmt(f).and_then(|_| this.fmt(f)),
Self::NotEndsWith(this) => '~'.fmt(f).and_then(|_| this.fmt(f)),
Self::IsSelfTypeCopy(is_true) => format!("self type is {} Copy", if is_true { "" } else { "not" }).fmt(f),
Self::IsSelfTypeCopy(is_true) => {
format!("`self` type is{} `Copy`", if is_true { "" } else { " not" }).fmt(f)
},
Self::ImplementsTrait(is_true) => {
format!("Method {} implement a trait", if is_true { "" } else { "do not" }).fmt(f)
let (negation, s_suffix) = if is_true { ("", "s") } else { (" does not", "") };
format!("Method{} implement{} a trait", negation, s_suffix).fmt(f)
},
}
}
Expand Down Expand Up @@ -99,15 +102,15 @@ pub(super) fn check<'tcx>(
{
None
} else {
Some(format!("`{}`", &conv.to_string()))
Some(format!("\"{}\"", &conv.to_string()))
}
})
.collect::<Vec<_>>()
.join(" and ");

format!("methods with the following characteristics: ({})", &s)
} else {
format!("methods called `{}`", &conventions[0])
format!("methods called \"{}\"", &conventions[0])
}
};

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/def_id_nocore.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: methods called `as_*` usually take self by reference or self by mutable reference
error: methods called "as_*" usually take self by reference or self by mutable reference
--> $DIR/def_id_nocore.rs:26:19
|
LL | pub fn as_ref(self) -> &'static str {
Expand Down
48 changes: 24 additions & 24 deletions tests/ui/wrong_self_convention.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:18:17
|
LL | fn from_i32(self) {}
Expand All @@ -7,183 +7,183 @@ LL | fn from_i32(self) {}
= note: `-D clippy::wrong-self-convention` implied by `-D warnings`
= help: consider choosing a less ambiguous name

error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:24:21
|
LL | pub fn from_i64(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `as_*` usually take self by reference or self by mutable reference
error: methods called "as_*" usually take self by reference or self by mutable reference
--> $DIR/wrong_self_convention.rs:36:15
|
LL | fn as_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `into_*` usually take self by value
error: methods called "into_*" usually take self by value
--> $DIR/wrong_self_convention.rs:38:17
|
LL | fn into_i32(&self) {}
| ^^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `is_*` usually take self by reference or no self
error: methods called "is_*" usually take self by reference or no self
--> $DIR/wrong_self_convention.rs:40:15
|
LL | fn is_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods with the following characteristics: (`to_*` and `self type is not Copy`) usually take self by reference
error: methods with the following characteristics: ("to_*" and "`self` type is not `Copy`") usually take self by reference
--> $DIR/wrong_self_convention.rs:42:15
|
LL | fn to_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:44:17
|
LL | fn from_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `as_*` usually take self by reference or self by mutable reference
error: methods called "as_*" usually take self by reference or self by mutable reference
--> $DIR/wrong_self_convention.rs:46:19
|
LL | pub fn as_i64(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `into_*` usually take self by value
error: methods called "into_*" usually take self by value
--> $DIR/wrong_self_convention.rs:47:21
|
LL | pub fn into_i64(&self) {}
| ^^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `is_*` usually take self by reference or no self
error: methods called "is_*" usually take self by reference or no self
--> $DIR/wrong_self_convention.rs:48:19
|
LL | pub fn is_i64(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods with the following characteristics: (`to_*` and `self type is not Copy`) usually take self by reference
error: methods with the following characteristics: ("to_*" and "`self` type is not `Copy`") usually take self by reference
--> $DIR/wrong_self_convention.rs:49:19
|
LL | pub fn to_i64(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:50:21
|
LL | pub fn from_i64(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `as_*` usually take self by reference or self by mutable reference
error: methods called "as_*" usually take self by reference or self by mutable reference
--> $DIR/wrong_self_convention.rs:95:19
|
LL | fn as_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `into_*` usually take self by value
error: methods called "into_*" usually take self by value
--> $DIR/wrong_self_convention.rs:98:25
|
LL | fn into_i32_ref(&self) {}
| ^^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `is_*` usually take self by reference or no self
error: methods called "is_*" usually take self by reference or no self
--> $DIR/wrong_self_convention.rs:100:19
|
LL | fn is_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:104:21
|
LL | fn from_i32(self) {}
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `as_*` usually take self by reference or self by mutable reference
error: methods called "as_*" usually take self by reference or self by mutable reference
--> $DIR/wrong_self_convention.rs:119:19
|
LL | fn as_i32(self);
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `into_*` usually take self by value
error: methods called "into_*" usually take self by value
--> $DIR/wrong_self_convention.rs:122:25
|
LL | fn into_i32_ref(&self);
| ^^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `is_*` usually take self by reference or no self
error: methods called "is_*" usually take self by reference or no self
--> $DIR/wrong_self_convention.rs:124:19
|
LL | fn is_i32(self);
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:128:21
|
LL | fn from_i32(self);
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `into_*` usually take self by value
error: methods called "into_*" usually take self by value
--> $DIR/wrong_self_convention.rs:146:25
|
LL | fn into_i32_ref(&self);
| ^^^^^
|
= help: consider choosing a less ambiguous name

error: methods called `from_*` usually take no self
error: methods called "from_*" usually take no self
--> $DIR/wrong_self_convention.rs:152:21
|
LL | fn from_i32(self);
| ^^^^
|
= help: consider choosing a less ambiguous name

error: methods with the following characteristics: (`to_*` and `self type is Copy`) usually take self by value
error: methods with the following characteristics: ("to_*" and "`self` type is `Copy`") usually take self by value
--> $DIR/wrong_self_convention.rs:181:22
|
LL | fn to_u64_v2(&self) -> u64 {
| ^^^^^
|
= help: consider choosing a less ambiguous name

error: methods with the following characteristics: (`to_*` and `self type is not Copy`) usually take self by reference
error: methods with the following characteristics: ("to_*" and "`self` type is not `Copy`") usually take self by reference
--> $DIR/wrong_self_convention.rs:190:19
|
LL | fn to_u64(self) -> u64 {
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/wrong_self_conventions_mut.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: methods with the following characteristics: (`to_*` and `self type is not Copy`) usually take self by reference
error: methods with the following characteristics: ("to_*" and "`self` type is not `Copy`") usually take self by reference
--> $DIR/wrong_self_conventions_mut.rs:15:24
|
LL | pub fn to_many(&mut self) -> Option<&mut [T]> {
Expand All @@ -7,7 +7,7 @@ LL | pub fn to_many(&mut self) -> Option<&mut [T]> {
= note: `-D clippy::wrong-self-convention` implied by `-D warnings`
= help: consider choosing a less ambiguous name

error: methods with the following characteristics: (`to_*` and `*_mut`) usually take self by mutable reference
error: methods with the following characteristics: ("to_*" and "*_mut") usually take self by mutable reference
--> $DIR/wrong_self_conventions_mut.rs:23:28
|
LL | pub fn to_many_mut(&self) -> Option<&[T]> {
Expand Down

0 comments on commit 39cabcd

Please sign in to comment.