mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 21:05:02 +00:00
clean up param hint checking
This commit is contained in:
parent
cba694c602
commit
ae416f3c6e
1 changed files with 18 additions and 18 deletions
|
@ -235,19 +235,7 @@ fn should_show_param_hint(
|
||||||
param_name: &str,
|
param_name: &str,
|
||||||
argument: &ast::Expr,
|
argument: &ast::Expr,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let argument_string = {
|
if param_name.is_empty() || is_argument_similar_to_param(argument, param_name) {
|
||||||
let mut arg_string = argument.syntax().to_string();
|
|
||||||
if arg_string.get(0..5) == Some("&mut ") {
|
|
||||||
arg_string = arg_string[5..].to_string();
|
|
||||||
} else if arg_string.get(0..1) == Some("&") {
|
|
||||||
arg_string = arg_string[1..].to_string();
|
|
||||||
}
|
|
||||||
arg_string
|
|
||||||
};
|
|
||||||
if param_name.is_empty()
|
|
||||||
|| argument_string.ends_with(¶m_name)
|
|
||||||
|| argument_string.starts_with(¶m_name)
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,15 +247,27 @@ fn should_show_param_hint(
|
||||||
|
|
||||||
// avoid displaying hints for common functions like map, filter, etc.
|
// avoid displaying hints for common functions like map, filter, etc.
|
||||||
// or other obvious words used in std
|
// or other obvious words used in std
|
||||||
|
if parameters_len == 1 && is_obvious_param(param_name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_argument_similar_to_param(argument: &ast::Expr, param_name: &str) -> bool {
|
||||||
|
let argument_string = if let ast::Expr::RefExpr(ref_expr) = argument {
|
||||||
|
ref_expr.syntax().last_token().expect("RefExpr should have a last_token").to_string()
|
||||||
|
} else {
|
||||||
|
argument.syntax().to_string()
|
||||||
|
};
|
||||||
|
argument_string.starts_with(¶m_name) || argument_string.ends_with(¶m_name)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_obvious_param(param_name: &str) -> bool {
|
||||||
let is_obvious_param_name = match param_name {
|
let is_obvious_param_name = match param_name {
|
||||||
"predicate" | "value" | "pat" | "rhs" | "other" => true,
|
"predicate" | "value" | "pat" | "rhs" | "other" => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
};
|
};
|
||||||
if parameters_len == 1 && (param_name.len() == 1 || is_obvious_param_name) {
|
param_name.len() == 1 || is_obvious_param_name
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_fn_signature(sema: &Semantics<RootDatabase>, expr: &ast::Expr) -> Option<FunctionSignature> {
|
fn get_fn_signature(sema: &Semantics<RootDatabase>, expr: &ast::Expr) -> Option<FunctionSignature> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue