about summary refs log tree commit diff
diff options
context:
space:
mode:
authordavidsemakula <hello@davidsemakula.com>2024-02-05 01:31:28 +0300
committerdavidsemakula <hello@davidsemakula.com>2024-02-05 01:31:28 +0300
commitb45ee8281181dfee3b63e36541b6d07e3f10942d (patch)
treecffa651fea374fbd6715df715e2915c412a42419
parent33b3b6dbf91d67cb9a724ccf268f990c89429665 (diff)
downloadrust-b45ee8281181dfee3b63e36541b6d07e3f10942d.tar.gz
rust-b45ee8281181dfee3b63e36541b6d07e3f10942d.zip
incorrect case diagnostics for param names of trait impl assoc functions
-rw-r--r--crates/hir-ty/src/diagnostics/decl_check.rs26
-rw-r--r--crates/ide-diagnostics/src/handlers/incorrect_case.rs2
2 files changed, 8 insertions, 20 deletions
diff --git a/crates/hir-ty/src/diagnostics/decl_check.rs b/crates/hir-ty/src/diagnostics/decl_check.rs
index e8abebeba4b..38eb3371e3c 100644
--- a/crates/hir-ty/src/diagnostics/decl_check.rs
+++ b/crates/hir-ty/src/diagnostics/decl_check.rs
@@ -316,31 +316,19 @@ impl<'a> DeclValidator<'a> {
     /// Check incorrect names for patterns inside the function body.
     /// This includes function parameters except for trait implementation associated functions.
     fn validate_func_body(&mut self, func: FunctionId) {
-        // Check whether function is an associated item of a trait implementation
-        let container = func.lookup(self.db.upcast()).container;
-        let is_trait_impl_assoc_fn = self.is_trait_impl_container(container);
-
         let body = self.db.body(func.into());
         let mut pats_replacements = body
             .pats
             .iter()
             .filter_map(|(pat_id, pat)| match pat {
                 Pat::Bind { id, .. } => {
-                    // Filter out parameters for trait implementation associated functions.
-                    if is_trait_impl_assoc_fn
-                        && body.params.iter().any(|param_id| *param_id == pat_id)
-                    {
-                        cov_mark::hit!(trait_impl_assoc_func_param_incorrect_case_ignored);
-                        None
-                    } else {
-                        let bind_name = &body.bindings[*id].name;
-                        let replacement = Replacement {
-                            current_name: bind_name.clone(),
-                            suggested_text: to_lower_snake_case(&bind_name.to_smol_str())?,
-                            expected_case: CaseType::LowerSnakeCase,
-                        };
-                        Some((pat_id, replacement))
-                    }
+                    let bind_name = &body.bindings[*id].name;
+                    let replacement = Replacement {
+                        current_name: bind_name.clone(),
+                        suggested_text: to_lower_snake_case(&bind_name.to_smol_str())?,
+                        expected_case: CaseType::LowerSnakeCase,
+                    };
+                    Some((pat_id, replacement))
                 }
                 _ => None,
             })
diff --git a/crates/ide-diagnostics/src/handlers/incorrect_case.rs b/crates/ide-diagnostics/src/handlers/incorrect_case.rs
index ecba53a1b8b..96fbb4468f5 100644
--- a/crates/ide-diagnostics/src/handlers/incorrect_case.rs
+++ b/crates/ide-diagnostics/src/handlers/incorrect_case.rs
@@ -486,7 +486,6 @@ trait BAD_TRAIT {
         cov_mark::check!(trait_impl_assoc_const_incorrect_case_ignored);
         cov_mark::check!(trait_impl_assoc_type_incorrect_case_ignored);
         cov_mark::check_count!(trait_impl_assoc_func_name_incorrect_case_ignored, 2);
-        cov_mark::check!(trait_impl_assoc_func_param_incorrect_case_ignored);
         check_diagnostics_with_disabled(
             r#"
 trait BAD_TRAIT {
@@ -506,6 +505,7 @@ impl BAD_TRAIT for () {
     const bad_const: u8 = 0;
     type BAD_TYPE = ();
     fn BAD_FUNCTION(BAD_PARAM: u8) {
+                 // ^^^^^^^^^ 💡 warn: Parameter `BAD_PARAM` should have snake_case name, e.g. `bad_param`
         let BAD_VAR = 0;
          // ^^^^^^^ 💡 warn: Variable `BAD_VAR` should have snake_case name, e.g. `bad_var`
     }