diff options
| author | Sosthène Guédon <sosthene@guedon.gdn> | 2022-11-20 15:34:56 +0100 |
|---|---|---|
| committer | Sosthène Guédon <sosthene@guedon.gdn> | 2022-11-20 15:49:09 +0100 |
| commit | 0411edfbbda82407c956b69db5bf687f8749766e (patch) | |
| tree | e3ddd8595b5fcae4d31e60b20d8ddc96e0d20590 | |
| parent | 6178ddaded7f73ba413475ea27ac98336069cb11 (diff) | |
| download | rust-0411edfbbda82407c956b69db5bf687f8749766e.tar.gz rust-0411edfbbda82407c956b69db5bf687f8749766e.zip | |
Improve diagnostic for cases where autoderef is used
| -rw-r--r-- | clippy_lints/src/functions/misnamed_getters.rs | 4 | ||||
| -rw-r--r-- | 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 c553901059b..5424c0eecfe 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 feefb95ab4f..5210295893e 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 |
