about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSosthène Guédon <sosthene@guedon.gdn>2022-11-20 15:34:56 +0100
committerSosthène Guédon <sosthene@guedon.gdn>2022-11-20 15:49:09 +0100
commit0411edfbbda82407c956b69db5bf687f8749766e (patch)
treee3ddd8595b5fcae4d31e60b20d8ddc96e0d20590
parent6178ddaded7f73ba413475ea27ac98336069cb11 (diff)
downloadrust-0411edfbbda82407c956b69db5bf687f8749766e.tar.gz
rust-0411edfbbda82407c956b69db5bf687f8749766e.zip
Improve diagnostic for cases where autoderef is used
-rw-r--r--clippy_lints/src/functions/misnamed_getters.rs4
-rw-r--r--tests/ui/misnamed_getters.stderr20
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