diff options
| author | Mateusz Gacek <96mateusz.gacek@gmail.com> | 2021-05-06 10:49:31 -0700 |
|---|---|---|
| committer | Mateusz Gacek <96mateusz.gacek@gmail.com> | 2021-05-06 10:49:31 -0700 |
| commit | ab3094b3dbf0bf6423a9cf0509a170eee89f106e (patch) | |
| tree | ef5413ffea785cfd402351f8d87cfc7a49556876 | |
| parent | f3a0ac1f4b3675e8313dff0f06023b463877dc4d (diff) | |
| download | rust-ab3094b3dbf0bf6423a9cf0509a170eee89f106e.tar.gz rust-ab3094b3dbf0bf6423a9cf0509a170eee89f106e.zip | |
wrong_self_convention: For `to_*` variant don't lint in trait impl taking `self` when non-`Copy` type
It relaxes rules for `to_*` variant, so it doesn't lint in trait definitions and implementations anymore. Although, non-`Copy` type implementing trait's `to_*` method taking `self` feels not good (consumes ownership, so should be rather named `into_`), it would be better if this case was a pedantic lint (allow-by-default) instead.
| -rw-r--r-- | clippy_lints/src/methods/wrong_self_convention.rs | 2 | ||||
| -rw-r--r-- | tests/ui/wrong_self_convention2.rs | 2 | ||||
| -rw-r--r-- | tests/ui/wrong_self_convention2.stderr | 11 |
3 files changed, 2 insertions, 13 deletions
diff --git a/clippy_lints/src/methods/wrong_self_convention.rs b/clippy_lints/src/methods/wrong_self_convention.rs index 6e2bcb113c2..1773c26c251 100644 --- a/clippy_lints/src/methods/wrong_self_convention.rs +++ b/clippy_lints/src/methods/wrong_self_convention.rs @@ -22,7 +22,7 @@ const CONVENTIONS: [(&[Convention], &[SelfKind]); 9] = [ // Conversion using `to_` can use borrowed (non-Copy types) or owned (Copy types). // Source: https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv (&[Convention::StartsWith("to_"), Convention::NotEndsWith("_mut"), Convention::IsSelfTypeCopy(false), - Convention::IsTraitItem(false)], &[SelfKind::Ref]), + Convention::IsTraitItem(false), Convention::ImplementsTrait(false)], &[SelfKind::Ref]), (&[Convention::StartsWith("to_"), Convention::NotEndsWith("_mut"), Convention::IsSelfTypeCopy(true), Convention::IsTraitItem(false), Convention::ImplementsTrait(false)], &[SelfKind::Value]), ]; diff --git a/tests/ui/wrong_self_convention2.rs b/tests/ui/wrong_self_convention2.rs index ae3a740d405..18202ef2989 100644 --- a/tests/ui/wrong_self_convention2.rs +++ b/tests/ui/wrong_self_convention2.rs @@ -23,7 +23,7 @@ mod issue6983 { } struct FooNoCopy; - // trigger lint + // don't trigger impl ToU64 for FooNoCopy { fn to_u64(self) -> u64 { 2 diff --git a/tests/ui/wrong_self_convention2.stderr b/tests/ui/wrong_self_convention2.stderr deleted file mode 100644 index 0ca1a390974..00000000000 --- a/tests/ui/wrong_self_convention2.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference - --> $DIR/wrong_self_convention2.rs:28:19 - | -LL | fn to_u64(self) -> u64 { - | ^^^^ - | - = note: `-D clippy::wrong-self-convention` implied by `-D warnings` - = help: consider choosing a less ambiguous name - -error: aborting due to previous error - |
