diff options
| author | bors <bors@rust-lang.org> | 2022-11-09 14:06:42 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-11-09 14:06:42 +0000 |
| commit | 432baf7026aa896cfe3d44705537879ab2202bfb (patch) | |
| tree | cdcd9662c21dce36f4d1a83991e5fb3a3d0d3271 | |
| parent | c4fbe54ac3916b42bb3469075abfef05803e3372 (diff) | |
| parent | 5b1e445b9abff4f9eec0c5911389913108f7ba93 (diff) | |
| download | rust-432baf7026aa896cfe3d44705537879ab2202bfb.tar.gz rust-432baf7026aa896cfe3d44705537879ab2202bfb.zip | |
Auto merge of #9813 - Jarcho:issue_9811, r=xFrednet
Fix `explicit_auto_deref` fp fixes #9763 fixes #9811 changelog: `explicit_auto_deref`: Don't lint when the target type is a projection with generic arguments
| -rw-r--r-- | clippy_lints/src/dereference.rs | 1 | ||||
| -rw-r--r-- | tests/ui/explicit_auto_deref.fixed | 11 | ||||
| -rw-r--r-- | tests/ui/explicit_auto_deref.rs | 11 |
3 files changed, 23 insertions, 0 deletions
diff --git a/clippy_lints/src/dereference.rs b/clippy_lints/src/dereference.rs index 400fbd6d8a7..0eee7f23982 100644 --- a/clippy_lints/src/dereference.rs +++ b/clippy_lints/src/dereference.rs @@ -1385,6 +1385,7 @@ fn ty_auto_deref_stability<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>, precedenc continue; }, ty::Param(_) => TyPosition::new_deref_stable_for_result(precedence, ty), + ty::Projection(_) if ty.has_non_region_param() => TyPosition::new_deref_stable_for_result(precedence, ty), ty::Infer(_) | ty::Error(_) | ty::Bound(..) | ty::Opaque(..) | ty::Placeholder(_) | ty::Dynamic(..) => { Position::ReborrowStable(precedence).into() }, diff --git a/tests/ui/explicit_auto_deref.fixed b/tests/ui/explicit_auto_deref.fixed index d1d35e5c0eb..59ff5e4040a 100644 --- a/tests/ui/explicit_auto_deref.fixed +++ b/tests/ui/explicit_auto_deref.fixed @@ -266,4 +266,15 @@ fn main() { } x }; + + trait WithAssoc { + type Assoc: ?Sized; + } + impl WithAssoc for String { + type Assoc = str; + } + fn takes_assoc<T: WithAssoc>(_: &T::Assoc) -> T { + unimplemented!() + } + let _: String = takes_assoc(&*String::new()); } diff --git a/tests/ui/explicit_auto_deref.rs b/tests/ui/explicit_auto_deref.rs index deedafad153..bcfb60c3278 100644 --- a/tests/ui/explicit_auto_deref.rs +++ b/tests/ui/explicit_auto_deref.rs @@ -266,4 +266,15 @@ fn main() { } *x }; + + trait WithAssoc { + type Assoc: ?Sized; + } + impl WithAssoc for String { + type Assoc = str; + } + fn takes_assoc<T: WithAssoc>(_: &T::Assoc) -> T { + unimplemented!() + } + let _: String = takes_assoc(&*String::new()); } |
