mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-24 05:33:27 +00:00
Auto merge of #10479 - Jarcho:issue_10474, r=flip1995
Don't lint `manual_clamp` in const contexts. fixes #10474 Probably worth including in the sync. r? `@flip1995` changelog: [`manual_clamp`]: Don't lint in const contexts.
This commit is contained in:
commit
8e1dd06918
2 changed files with 23 additions and 3 deletions
|
@ -6,7 +6,8 @@ use clippy_utils::ty::implements_trait;
|
|||
use clippy_utils::visitors::is_const_evaluatable;
|
||||
use clippy_utils::MaybePath;
|
||||
use clippy_utils::{
|
||||
eq_expr_value, is_diag_trait_item, is_trait_method, path_res, path_to_local_id, peel_blocks, peel_blocks_with_stmt,
|
||||
eq_expr_value, in_constant, is_diag_trait_item, is_trait_method, path_res, path_to_local_id, peel_blocks,
|
||||
peel_blocks_with_stmt,
|
||||
};
|
||||
use itertools::Itertools;
|
||||
use rustc_errors::Applicability;
|
||||
|
@ -117,7 +118,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualClamp {
|
|||
if !self.msrv.meets(msrvs::CLAMP) {
|
||||
return;
|
||||
}
|
||||
if !expr.span.from_expansion() {
|
||||
if !expr.span.from_expansion() && !in_constant(cx, expr.hir_id) {
|
||||
let suggestion = is_if_elseif_else_pattern(cx, expr)
|
||||
.or_else(|| is_max_min_pattern(cx, expr))
|
||||
.or_else(|| is_call_max_min_pattern(cx, expr))
|
||||
|
@ -130,7 +131,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualClamp {
|
|||
}
|
||||
|
||||
fn check_block(&mut self, cx: &LateContext<'tcx>, block: &'tcx Block<'tcx>) {
|
||||
if !self.msrv.meets(msrvs::CLAMP) {
|
||||
if !self.msrv.meets(msrvs::CLAMP) || in_constant(cx, block.hir_id) {
|
||||
return;
|
||||
}
|
||||
for suggestion in is_two_if_pattern(cx, block) {
|
||||
|
|
|
@ -326,3 +326,22 @@ fn msrv_1_50() {
|
|||
input
|
||||
};
|
||||
}
|
||||
|
||||
const fn _const() {
|
||||
let (input, min, max) = (0, -1, 2);
|
||||
let _ = if input < min {
|
||||
min
|
||||
} else if input > max {
|
||||
max
|
||||
} else {
|
||||
input
|
||||
};
|
||||
|
||||
let mut x = input;
|
||||
if max < x {
|
||||
let x = max;
|
||||
}
|
||||
if min > x {
|
||||
x = min;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue