From 0411edfbbda82407c956b69db5bf687f8749766e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sosth=C3=A8ne=20Gu=C3=A9don?= Date: Sun, 20 Nov 2022 15:34:56 +0100 Subject: [PATCH] Improve diagnostic for cases where autoderef is used --- .../src/functions/misnamed_getters.rs | 4 ++-- tests/ui/misnamed_getters.stderr | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/clippy_lints/src/functions/misnamed_getters.rs b/clippy_lints/src/functions/misnamed_getters.rs index c553901059bb..5424c0eecfed 100644 --- a/clippy_lints/src/functions/misnamed_getters.rs +++ b/clippy_lints/src/functions/misnamed_getters.rs @@ -75,7 +75,7 @@ pub fn check_fn( } }; - let ty = cx.typeck_results().expr_ty(self_data); + let ty = cx.typeck_results().expr_ty_adjusted(self_data); let def = { let mut kind = ty.kind(); @@ -102,7 +102,7 @@ pub fn check_fn( let Some(used_field) = used_field else { // FIXME: This can be reached if the field access uses autoderef. - // `dec.all_fields()` should be replaced by something that uses autoderef. + // `dec.all_fields()` should be replaced by something that uses autoderef on the unajusted type of `self_data` return; }; diff --git a/tests/ui/misnamed_getters.stderr b/tests/ui/misnamed_getters.stderr index feefb95ab4f8..5210295893e8 100644 --- a/tests/ui/misnamed_getters.stderr +++ b/tests/ui/misnamed_getters.stderr @@ -126,5 +126,23 @@ LL | | &mut self.a LL | | } | |_____^ -error: aborting due to 14 previous errors +error: getter function appears to return the wrong field + --> $DIR/misnamed_getters.rs:92:5 + | +LL | / unsafe fn a(&self) -> &u8 { +LL | | &self.inner.b + | | ------------- help: consider using: `&self.inner.a` +LL | | } + | |_____^ + +error: getter function appears to return the wrong field + --> $DIR/misnamed_getters.rs:95:5 + | +LL | / unsafe fn a_mut(&mut self) -> &mut u8 { +LL | | &mut self.inner.b + | | ----------------- help: consider using: `&mut self.inner.a` +LL | | } + | |_____^ + +error: aborting due to 16 previous errors