From de6db0632228ae61f7ec1f87eaf520ccd4e46925 Mon Sep 17 00:00:00 2001 From: IceSentry Date: Wed, 8 Apr 2020 19:07:21 -0400 Subject: ignore `&mut ` and `&` when checking params --- crates/ra_ide/src/inlay_hints.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/ra_ide/src/inlay_hints.rs b/crates/ra_ide/src/inlay_hints.rs index a86e18fbb..6b8b5813d 100644 --- a/crates/ra_ide/src/inlay_hints.rs +++ b/crates/ra_ide/src/inlay_hints.rs @@ -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 = arg_string.chars().collect(); + match arg_split.as_slice() { + ['&', 'm', 'u', 't', ' ', arg_name @ ..] => arg_name.into_iter().collect::(), + ['&', arg_name @ ..] => arg_name.into_iter().collect::(), + _ => arg_string, + } + }; if param_name.is_empty() || argument_string.ends_with(¶m_name) || argument_string.starts_with(¶m_name) @@ -1077,7 +1085,8 @@ impl Test { 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(¶m_begin); + different_order(&mut param_begin); let a: f64 = 7.0; let b: f64 = 4.0; -- cgit v1.2.3