Skip to content

Commit 28f247e

Browse files
committed
Use the expanded method lists
1 parent e51fcd0 commit 28f247e

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

clippy_lints/src/casts/cast_sign_loss.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,24 +102,20 @@ fn expr_sign(cx: &LateContext<'_>, expr: &Expr<'_>, ty: Ty<'_>) -> Sign {
102102
if let Some(val) = get_const_int_eval(cx, expr, ty) {
103103
return if val >= 0 { Sign::ZeroOrPositive } else { Sign::Negative };
104104
}
105+
105106
// Calling on methods that always return non-negative values.
106107
if let ExprKind::MethodCall(path, caller, args, ..) = expr.kind {
107108
let mut method_name = path.ident.name.as_str();
108109

109-
if method_name == "unwrap"
110-
&& let Some(arglist) = method_chain_args(expr, &["unwrap"])
111-
&& let ExprKind::MethodCall(inner_path, ..) = &arglist[0].0.kind
112-
{
113-
method_name = inner_path.ident.name.as_str();
114-
}
115-
if method_name == "expect"
116-
&& let Some(arglist) = method_chain_args(expr, &["expect"])
110+
// Peel unwrap(), expect(), etc.
111+
while let Some(&found_name) = METHODS_UNWRAP.iter().find(|&name| &method_name == name)
112+
&& let Some(arglist) = method_chain_args(expr, &[found_name])
117113
&& let ExprKind::MethodCall(inner_path, ..) = &arglist[0].0.kind
118114
{
119115
method_name = inner_path.ident.name.as_str();
120116
}
121117

122-
if method_name == "pow"
118+
if METHODS_POW.iter().any(|&name| method_name == name)
123119
&& let [arg] = args
124120
{
125121
return pow_call_result_sign(cx, caller, arg);

0 commit comments

Comments
 (0)