]> git.lizzy.rs Git - rust.git/commitdiff
ignore `&mut ` and `&` when checking params
authorIceSentry <c.giguere42@gmail.com>
Wed, 8 Apr 2020 23:07:21 +0000 (19:07 -0400)
committerIceSentry <c.giguere42@gmail.com>
Wed, 8 Apr 2020 23:07:21 +0000 (19:07 -0400)
crates/ra_ide/src/inlay_hints.rs

index a86e18fbbc2577af100c2862c8b72308d6b85f65..6b8b5813d42c8bf1516750e3b49c03e9e2de2762 100644 (file)
@@ -235,7 +235,15 @@ fn should_show_param_hint(
     param_name: &str,
     argument: &ast::Expr,
 ) -> bool {
-    let argument_string = argument.syntax().to_string();
+    let argument_string = {
+        let arg_string = argument.syntax().to_string();
+        let arg_split: Vec<char> = arg_string.chars().collect();
+        match arg_split.as_slice() {
+            ['&', 'm', 'u', 't', ' ', arg_name @ ..] => arg_name.into_iter().collect::<String>(),
+            ['&', arg_name @ ..] => arg_name.into_iter().collect::<String>(),
+            _ => arg_string,
+        }
+    };
     if param_name.is_empty()
         || argument_string.ends_with(&param_name)
         || argument_string.starts_with(&param_name)
@@ -1077,7 +1085,8 @@ fn no_hints_expected(&self, _: i32, test_var: i32) {}
 
 struct Param {}
 
-fn different_order(param: Param) {}
+fn different_order(param: &Param) {}
+fn different_order_mut(param: &mut Param) {}
 
 fn main() {
     let container: TestVarContainer = TestVarContainer { test_var: 42 };
@@ -1093,7 +1102,8 @@ fn main() {
     test_processed.no_hints_expected(33, container.test_var);
 
     let param_begin: Param = Param {};
-    different_order(param_begin);
+    different_order(&param_begin);
+    different_order(&mut param_begin);
 
     let a: f64 = 7.0;
     let b: f64 = 4.0;