about summary refs log tree commit diff
path: root/clippy_lints/src/unconditional_recursion.rs
diff options
context:
space:
mode:
authorPhilipp Krones <hello@philkrones.com>2024-01-25 19:17:36 +0100
committerPhilipp Krones <hello@philkrones.com>2024-01-25 19:17:36 +0100
commit798865c593b8ad255ed1e19ee2502c8d91f16c65 (patch)
tree45a86a528d2ea8bed8b4c82f4a6d0ad108e67f5e /clippy_lints/src/unconditional_recursion.rs
parent0b6cf3b78c9602798b132ea4a420ea51fe3aa795 (diff)
Merge commit '66c29b973b3b10278bd39f4e26b08522a379c2c9' into clippy-subtree-update
Diffstat (limited to 'clippy_lints/src/unconditional_recursion.rs')
-rw-r--r--clippy_lints/src/unconditional_recursion.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/clippy_lints/src/unconditional_recursion.rs b/clippy_lints/src/unconditional_recursion.rs
index b418db53ea4..209035804e4 100644
--- a/clippy_lints/src/unconditional_recursion.rs
+++ b/clippy_lints/src/unconditional_recursion.rs
@@ -167,7 +167,15 @@ fn check_partial_eq(cx: &LateContext<'_>, method_span: Span, method_def_id: Loca
                     false
                 }
             },
-            ExprKind::MethodCall(segment, _receiver, &[_arg], _) if segment.ident.name == name.name => {
+            ExprKind::MethodCall(segment, receiver, &[_arg], _) if segment.ident.name == name.name => {
+                if let Some(ty) = cx.typeck_results().expr_ty_opt(receiver)
+                    && let Some(ty_id) = get_ty_def_id(ty)
+                    && self_arg != ty_id
+                {
+                    // Since this called on a different type, the lint should not be
+                    // triggered here.
+                    return;
+                }
                 if let Some(fn_id) = cx.typeck_results().type_dependent_def_id(expr.hir_id)
                     && let Some(trait_id) = cx.tcx.trait_of_item(fn_id)
                     && trait_id == trait_def_id