Skip to content

Commit ae416f3

Browse files
committed
clean up param hint checking
1 parent cba694c commit ae416f3

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

crates/ra_ide/src/inlay_hints.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -235,19 +235,7 @@ fn should_show_param_hint(
235235
param_name: &str,
236236
argument: &ast::Expr,
237237
) -> bool {
238-
let argument_string = {
239-
let mut arg_string = argument.syntax().to_string();
240-
if arg_string.get(0..5) == Some("&mut ") {
241-
arg_string = arg_string[5..].to_string();
242-
} else if arg_string.get(0..1) == Some("&") {
243-
arg_string = arg_string[1..].to_string();
244-
}
245-
arg_string
246-
};
247-
if param_name.is_empty()
248-
|| argument_string.ends_with(&param_name)
249-
|| argument_string.starts_with(&param_name)
250-
{
238+
if param_name.is_empty() || is_argument_similar_to_param(argument, param_name) {
251239
return false;
252240
}
253241

@@ -259,15 +247,27 @@ fn should_show_param_hint(
259247

260248
// avoid displaying hints for common functions like map, filter, etc.
261249
// or other obvious words used in std
250+
if parameters_len == 1 && is_obvious_param(param_name) {
251+
return false;
252+
}
253+
true
254+
}
255+
256+
fn is_argument_similar_to_param(argument: &ast::Expr, param_name: &str) -> bool {
257+
let argument_string = if let ast::Expr::RefExpr(ref_expr) = argument {
258+
ref_expr.syntax().last_token().expect("RefExpr should have a last_token").to_string()
259+
} else {
260+
argument.syntax().to_string()
261+
};
262+
argument_string.starts_with(&param_name) || argument_string.ends_with(&param_name)
263+
}
264+
265+
fn is_obvious_param(param_name: &str) -> bool {
262266
let is_obvious_param_name = match param_name {
263267
"predicate" | "value" | "pat" | "rhs" | "other" => true,
264268
_ => false,
265269
};
266-
if parameters_len == 1 && (param_name.len() == 1 || is_obvious_param_name) {
267-
return false;
268-
}
269-
270-
true
270+
param_name.len() == 1 || is_obvious_param_name
271271
}
272272

273273
fn get_fn_signature(sema: &Semantics<RootDatabase>, expr: &ast::Expr) -> Option<FunctionSignature> {

0 commit comments

Comments
 (0)