Skip to content

Commit ffc391c

Browse files
committed
Auto merge of #13231 - Jarcho:no_tree_walk_in_const, r=Alexendoo
Don't walk the HIR tree when checking for a const context changelog: none
2 parents 5ccf543 + 16633a2 commit ffc391c

24 files changed

+71
-67
lines changed

clippy_lints/src/bool_to_int_with_if.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_then;
22
use clippy_utils::sugg::Sugg;
3-
use clippy_utils::{in_constant, is_else_clause};
3+
use clippy_utils::{is_else_clause, is_in_const_context};
44
use rustc_ast::LitKind;
55
use rustc_errors::Applicability;
66
use rustc_hir::{Expr, ExprKind};
@@ -52,7 +52,7 @@ impl<'tcx> LateLintPass<'tcx> for BoolToIntWithIf {
5252
&& let Some(else_lit) = as_int_bool_lit(else_)
5353
&& then_lit != else_lit
5454
&& !expr.span.from_expansion()
55-
&& !in_constant(cx, expr.hir_id)
55+
&& !is_in_const_context(cx)
5656
{
5757
let ty = cx.typeck_results().expr_ty(then);
5858
let mut applicability = Applicability::MachineApplicable;

clippy_lints/src/casts/cast_lossless.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_config::msrvs::{self, Msrv};
22
use clippy_utils::diagnostics::span_lint_and_then;
3-
use clippy_utils::in_constant;
3+
use clippy_utils::is_in_const_context;
44
use clippy_utils::source::snippet_opt;
55
use clippy_utils::sugg::Sugg;
66
use clippy_utils::ty::is_isize_or_usize;
@@ -21,7 +21,7 @@ pub(super) fn check(
2121
cast_to_hir: &rustc_hir::Ty<'_>,
2222
msrv: &Msrv,
2323
) {
24-
if !should_lint(cx, expr, cast_from, cast_to, msrv) {
24+
if !should_lint(cx, cast_from, cast_to, msrv) {
2525
return;
2626
}
2727

@@ -70,9 +70,9 @@ pub(super) fn check(
7070
);
7171
}
7272

73-
fn should_lint(cx: &LateContext<'_>, expr: &Expr<'_>, cast_from: Ty<'_>, cast_to: Ty<'_>, msrv: &Msrv) -> bool {
73+
fn should_lint(cx: &LateContext<'_>, cast_from: Ty<'_>, cast_to: Ty<'_>, msrv: &Msrv) -> bool {
7474
// Do not suggest using From in consts/statics until it is valid to do so (see #2267).
75-
if in_constant(cx, expr.hir_id) {
75+
if is_in_const_context(cx) {
7676
return false;
7777
}
7878

clippy_lints/src/casts/zero_ptr.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
22
use clippy_utils::source::snippet_opt;
3-
use clippy_utils::{in_constant, is_integer_literal, std_or_core};
3+
use clippy_utils::{is_in_const_context, is_integer_literal, std_or_core};
44
use rustc_errors::Applicability;
55
use rustc_hir::{Expr, Mutability, Ty, TyKind};
66
use rustc_lint::LateContext;
@@ -10,7 +10,7 @@ use super::ZERO_PTR;
1010
pub fn check(cx: &LateContext<'_>, expr: &Expr<'_>, from: &Expr<'_>, to: &Ty<'_>) {
1111
if let TyKind::Ptr(ref mut_ty) = to.kind
1212
&& is_integer_literal(from, 0)
13-
&& !in_constant(cx, from.hir_id)
13+
&& !is_in_const_context(cx)
1414
&& let Some(std_or_core) = std_or_core(cx)
1515
{
1616
let (msg, sugg_fn) = match mut_ty.mutbl {

clippy_lints/src/checked_conversions.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use clippy_config::msrvs::{self, Msrv};
44
use clippy_config::Conf;
55
use clippy_utils::diagnostics::span_lint_and_sugg;
66
use clippy_utils::source::snippet_with_applicability;
7-
use clippy_utils::{in_constant, is_integer_literal, SpanlessEq};
7+
use clippy_utils::{is_in_const_context, is_integer_literal, SpanlessEq};
88
use rustc_errors::Applicability;
99
use rustc_hir::{BinOpKind, Expr, ExprKind, QPath, TyKind};
1010
use rustc_lint::{LateContext, LateLintPass, LintContext};
@@ -67,7 +67,7 @@ impl<'tcx> LateLintPass<'tcx> for CheckedConversions {
6767
_ => return,
6868
}
6969
&& !in_external_macro(cx.sess(), item.span)
70-
&& !in_constant(cx, item.hir_id)
70+
&& !is_in_const_context(cx)
7171
&& self.msrv.meets(msrvs::TRY_FROM)
7272
&& let Some(cv) = match op2 {
7373
// todo: check for case signed -> larger unsigned == only x >= 0

clippy_lints/src/comparison_chain.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_help;
22
use clippy_utils::ty::implements_trait;
3-
use clippy_utils::{if_sequence, in_constant, is_else_clause, SpanlessEq};
3+
use clippy_utils::{if_sequence, is_else_clause, is_in_const_context, SpanlessEq};
44
use rustc_hir::{BinOpKind, Expr, ExprKind};
55
use rustc_lint::{LateContext, LateLintPass};
66
use rustc_session::declare_lint_pass;
@@ -68,7 +68,7 @@ impl<'tcx> LateLintPass<'tcx> for ComparisonChain {
6868
return;
6969
}
7070

71-
if in_constant(cx, expr.hir_id) {
71+
if is_in_const_context(cx) {
7272
return;
7373
}
7474

clippy_lints/src/doc/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use clippy_utils::diagnostics::{span_lint, span_lint_and_help};
55
use clippy_utils::macros::{is_panic, root_macro_call_first_node};
66
use clippy_utils::ty::is_type_diagnostic_item;
77
use clippy_utils::visitors::Visitable;
8-
use clippy_utils::{in_constant, is_entrypoint_fn, is_trait_impl_item, method_chain_args};
8+
use clippy_utils::{is_entrypoint_fn, is_trait_impl_item, method_chain_args};
99
use pulldown_cmark::Event::{
1010
Code, DisplayMath, End, FootnoteReference, HardBreak, Html, InlineHtml, InlineMath, Rule, SoftBreak, Start,
1111
TaskListMarker, Text,
@@ -858,7 +858,7 @@ impl<'a, 'tcx> Visitor<'tcx> for FindPanicUnwrap<'a, 'tcx> {
858858
"assert" | "assert_eq" | "assert_ne"
859859
)
860860
{
861-
self.is_const = in_constant(self.cx, expr.hir_id);
861+
self.is_const = self.cx.tcx.hir().is_inside_const_context(expr.hir_id);
862862
self.panic_span = Some(macro_call.span);
863863
}
864864
}

clippy_lints/src/floating_point_arithmetic.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use clippy_utils::consts::Constant::{Int, F32, F64};
22
use clippy_utils::consts::{constant, constant_simple, Constant};
33
use clippy_utils::diagnostics::span_lint_and_sugg;
44
use clippy_utils::{
5-
eq_expr_value, get_parent_expr, higher, in_constant, is_inherent_method_call, is_no_std_crate, numeric_literal,
6-
peel_blocks, sugg,
5+
eq_expr_value, get_parent_expr, higher, is_in_const_context, is_inherent_method_call, is_no_std_crate,
6+
numeric_literal, peel_blocks, sugg,
77
};
88
use rustc_errors::Applicability;
99
use rustc_hir::{BinOpKind, Expr, ExprKind, PathSegment, UnOp};
@@ -753,7 +753,7 @@ fn check_radians(cx: &LateContext<'_>, expr: &Expr<'_>) {
753753
impl<'tcx> LateLintPass<'tcx> for FloatingPointArithmetic {
754754
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) {
755755
// All of these operations are currently not const and are in std.
756-
if in_constant(cx, expr.hir_id) {
756+
if is_in_const_context(cx) {
757757
return;
758758
}
759759

clippy_lints/src/from_str_radix_10.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
22
use clippy_utils::sugg::Sugg;
33
use clippy_utils::ty::{is_type_diagnostic_item, is_type_lang_item};
4-
use clippy_utils::{in_constant, is_integer_literal};
4+
use clippy_utils::{is_in_const_context, is_integer_literal};
55
use rustc_errors::Applicability;
66
use rustc_hir::{def, Expr, ExprKind, LangItem, PrimTy, QPath, TyKind};
77
use rustc_lint::{LateContext, LateLintPass};
@@ -63,7 +63,7 @@ impl<'tcx> LateLintPass<'tcx> for FromStrRadix10 {
6363

6464
// do not lint in constant context, because the suggestion won't work.
6565
// NB: keep this check until a new `const_trait_impl` is available and stabilized.
66-
&& !in_constant(cx, exp.hir_id)
66+
&& !is_in_const_context(cx)
6767
{
6868
let expr = if let ExprKind::AddrOf(_, _, expr) = &src.kind {
6969
let ty = cx.typeck_results().expr_ty(expr);

clippy_lints/src/if_then_some_else_none.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ use clippy_utils::diagnostics::span_lint_and_then;
44
use clippy_utils::eager_or_lazy::switch_to_eager_eval;
55
use clippy_utils::source::snippet_with_context;
66
use clippy_utils::sugg::Sugg;
7-
use clippy_utils::{contains_return, higher, in_constant, is_else_clause, is_res_lang_ctor, path_res, peel_blocks};
7+
use clippy_utils::{
8+
contains_return, higher, is_else_clause, is_in_const_context, is_res_lang_ctor, path_res, peel_blocks,
9+
};
810
use rustc_errors::Applicability;
911
use rustc_hir::LangItem::{OptionNone, OptionSome};
1012
use rustc_hir::{Expr, ExprKind};
@@ -76,7 +78,7 @@ impl<'tcx> LateLintPass<'tcx> for IfThenSomeElseNone {
7678
&& is_res_lang_ctor(cx, path_res(cx, then_call), OptionSome)
7779
&& is_res_lang_ctor(cx, path_res(cx, peel_blocks(els)), OptionNone)
7880
&& !is_else_clause(cx.tcx, expr)
79-
&& !in_constant(cx, expr.hir_id)
81+
&& !is_in_const_context(cx)
8082
&& !in_external_macro(cx.sess(), expr.span)
8183
&& self.msrv.meets(msrvs::BOOL_THEN)
8284
&& !contains_return(then_block.stmts)

clippy_lints/src/manual_clamp.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use clippy_utils::sugg::Sugg;
77
use clippy_utils::ty::implements_trait;
88
use clippy_utils::visitors::is_const_evaluatable;
99
use clippy_utils::{
10-
eq_expr_value, in_constant, is_diag_trait_item, is_trait_method, path_res, path_to_local_id, peel_blocks,
10+
eq_expr_value, is_diag_trait_item, is_in_const_context, is_trait_method, path_res, path_to_local_id, peel_blocks,
1111
peel_blocks_with_stmt, MaybePath,
1212
};
1313
use itertools::Itertools;
@@ -146,7 +146,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualClamp {
146146
if !self.msrv.meets(msrvs::CLAMP) {
147147
return;
148148
}
149-
if !expr.span.from_expansion() && !in_constant(cx, expr.hir_id) {
149+
if !expr.span.from_expansion() && !is_in_const_context(cx) {
150150
let suggestion = is_if_elseif_else_pattern(cx, expr)
151151
.or_else(|| is_max_min_pattern(cx, expr))
152152
.or_else(|| is_call_max_min_pattern(cx, expr))
@@ -159,7 +159,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualClamp {
159159
}
160160

161161
fn check_block(&mut self, cx: &LateContext<'tcx>, block: &'tcx Block<'tcx>) {
162-
if !self.msrv.meets(msrvs::CLAMP) || in_constant(cx, block.hir_id) {
162+
if !self.msrv.meets(msrvs::CLAMP) || is_in_const_context(cx) {
163163
return;
164164
}
165165
for suggestion in is_two_if_pattern(cx, block) {

clippy_lints/src/manual_is_ascii_check.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use clippy_config::Conf;
33
use clippy_utils::diagnostics::span_lint_and_then;
44
use clippy_utils::macros::matching_root_macro_call;
55
use clippy_utils::sugg::Sugg;
6-
use clippy_utils::{higher, in_constant, path_to_local, peel_ref_operators};
6+
use clippy_utils::{higher, is_in_const_context, path_to_local, peel_ref_operators};
77
use rustc_ast::ast::RangeLimits;
88
use rustc_ast::LitKind::{Byte, Char};
99
use rustc_errors::Applicability;
@@ -95,7 +95,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualIsAsciiCheck {
9595
return;
9696
}
9797

98-
if in_constant(cx, expr.hir_id) && !self.msrv.meets(msrvs::IS_ASCII_DIGIT_CONST) {
98+
if is_in_const_context(cx) && !self.msrv.meets(msrvs::IS_ASCII_DIGIT_CONST) {
9999
return;
100100
}
101101

clippy_lints/src/manual_rem_euclid.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use clippy_config::Conf;
33
use clippy_utils::consts::{constant_full_int, FullInt};
44
use clippy_utils::diagnostics::span_lint_and_sugg;
55
use clippy_utils::source::snippet_with_context;
6-
use clippy_utils::{in_constant, path_to_local};
6+
use clippy_utils::{is_in_const_context, path_to_local};
77
use rustc_errors::Applicability;
88
use rustc_hir::{BinOpKind, Expr, ExprKind, Node, TyKind};
99
use rustc_lint::{LateContext, LateLintPass, LintContext};
@@ -62,7 +62,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualRemEuclid {
6262
&& add_rhs.span.ctxt() == ctxt
6363
&& !in_external_macro(cx.sess(), expr.span)
6464
&& self.msrv.meets(msrvs::REM_EUCLID)
65-
&& (self.msrv.meets(msrvs::REM_EUCLID_CONST) || !in_constant(cx, expr.hir_id))
65+
&& (self.msrv.meets(msrvs::REM_EUCLID_CONST) || !is_in_const_context(cx))
6666
&& let Some(const1) = check_for_unsigned_int_constant(cx, rem_rhs)
6767
&& let Some((const2, add_other)) = check_for_either_unsigned_int_constant(cx, add_lhs, add_rhs)
6868
&& let ExprKind::Binary(rem2_op, rem2_lhs, rem2_rhs) = add_other.kind

clippy_lints/src/manual_slice_size_calculation.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
22
use clippy_utils::source::snippet_with_context;
3-
use clippy_utils::{expr_or_init, in_constant, std_or_core};
3+
use clippy_utils::{expr_or_init, is_in_const_context, std_or_core};
44
use rustc_errors::Applicability;
55
use rustc_hir::{BinOpKind, Expr, ExprKind};
66
use rustc_lint::{LateContext, LateLintPass};
@@ -44,7 +44,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualSliceSizeCalculation {
4444
&& BinOpKind::Mul == op.node
4545
&& !expr.span.from_expansion()
4646
// Does not apply inside const because size_of_val is not cost in stable.
47-
&& !in_constant(cx, expr.hir_id)
47+
&& !is_in_const_context(cx)
4848
&& let Some(receiver) = simplify(cx, left, right)
4949
{
5050
let ctxt = expr.span.ctxt();

clippy_lints/src/manual_unwrap_or_default.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use clippy_utils::diagnostics::span_lint_and_sugg;
1010
use clippy_utils::higher::IfLetOrMatch;
1111
use clippy_utils::sugg::Sugg;
1212
use clippy_utils::ty::implements_trait;
13-
use clippy_utils::{in_constant, is_default_equivalent, peel_blocks, span_contains_comment};
13+
use clippy_utils::{is_default_equivalent, is_in_const_context, peel_blocks, span_contains_comment};
1414

1515
declare_clippy_lint! {
1616
/// ### What it does
@@ -174,7 +174,7 @@ impl<'tcx> LateLintPass<'tcx> for ManualUnwrapOrDefault {
174174
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) {
175175
if let Some(if_let_or_match) = IfLetOrMatch::parse(cx, expr)
176176
&& !expr.span.from_expansion()
177-
&& !in_constant(cx, expr.hir_id)
177+
&& !is_in_const_context(cx)
178178
{
179179
handle(cx, if_let_or_match, expr);
180180
}

clippy_lints/src/matches/match_wild_err_arm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use clippy_utils::diagnostics::span_lint_and_note;
22
use clippy_utils::macros::{is_panic, root_macro_call};
33
use clippy_utils::ty::is_type_diagnostic_item;
44
use clippy_utils::visitors::is_local_used;
5-
use clippy_utils::{in_constant, is_wild, peel_blocks_with_stmt};
5+
use clippy_utils::{is_in_const_context, is_wild, peel_blocks_with_stmt};
66
use rustc_hir::{Arm, Expr, PatKind};
77
use rustc_lint::LateContext;
88
use rustc_span::symbol::{kw, sym};
@@ -11,7 +11,7 @@ use super::MATCH_WILD_ERR_ARM;
1111

1212
pub(crate) fn check<'tcx>(cx: &LateContext<'tcx>, ex: &Expr<'tcx>, arms: &[Arm<'tcx>]) {
1313
// `unwrap`/`expect` is not (yet) const, so we want to allow this in const contexts for now
14-
if in_constant(cx, ex.hir_id) {
14+
if is_in_const_context(cx) {
1515
return;
1616
}
1717

clippy_lints/src/matches/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mod wild_in_or_pats;
2727
use clippy_config::msrvs::{self, Msrv};
2828
use clippy_config::Conf;
2929
use clippy_utils::source::walk_span_to_context;
30-
use clippy_utils::{higher, in_constant, is_direct_expn_of, is_span_match, span_contains_cfg};
30+
use clippy_utils::{higher, is_direct_expn_of, is_in_const_context, is_span_match, span_contains_cfg};
3131
use rustc_hir::{Arm, Expr, ExprKind, LetStmt, MatchSource, Pat, PatKind};
3232
use rustc_lint::{LateContext, LateLintPass, LintContext};
3333
use rustc_middle::lint::in_external_macro;
@@ -1069,7 +1069,7 @@ impl<'tcx> LateLintPass<'tcx> for Matches {
10691069
match_str_case_mismatch::check(cx, ex, arms);
10701070
redundant_guards::check(cx, arms, &self.msrv);
10711071

1072-
if !in_constant(cx, expr.hir_id) {
1072+
if !is_in_const_context(cx) {
10731073
manual_unwrap_or::check_match(cx, expr, ex, arms);
10741074
manual_map::check_match(cx, expr, ex, arms);
10751075
manual_filter::check_match(cx, ex, arms, expr);
@@ -1098,7 +1098,7 @@ impl<'tcx> LateLintPass<'tcx> for Matches {
10981098
else_expr,
10991099
);
11001100
}
1101-
if !in_constant(cx, expr.hir_id) {
1101+
if !is_in_const_context(cx) {
11021102
manual_unwrap_or::check_if_let(
11031103
cx,
11041104
expr,

clippy_lints/src/matches/redundant_guards.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use clippy_utils::diagnostics::span_lint_and_then;
33
use clippy_utils::macros::matching_root_macro_call;
44
use clippy_utils::source::snippet;
55
use clippy_utils::visitors::{for_each_expr_without_closures, is_local_used};
6-
use clippy_utils::{in_constant, path_to_local};
6+
use clippy_utils::{is_in_const_context, path_to_local};
77
use rustc_ast::{BorrowKind, LitKind};
88
use rustc_errors::Applicability;
99
use rustc_hir::def::{DefKind, Res};
@@ -116,7 +116,7 @@ fn check_method_calls<'tcx>(
116116
// `s if s.is_empty()` becomes ""
117117
// `arr if arr.is_empty()` becomes []
118118

119-
if ty.is_str() && !in_constant(cx, if_expr.hir_id) {
119+
if ty.is_str() && !is_in_const_context(cx) {
120120
r#""""#.into()
121121
} else if slice_like {
122122
"[]".into()

clippy_lints/src/non_copy_const.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::ptr;
66

77
use clippy_config::Conf;
88
use clippy_utils::diagnostics::span_lint_and_then;
9-
use clippy_utils::in_constant;
9+
use clippy_utils::is_in_const_context;
1010
use clippy_utils::macros::macro_backtrace;
1111
use clippy_utils::ty::{implements_trait, InteriorMut};
1212
use rustc_hir::def::{DefKind, Res};
@@ -406,7 +406,7 @@ impl<'tcx> LateLintPass<'tcx> for NonCopyConst<'tcx> {
406406
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) {
407407
if let ExprKind::Path(qpath) = &expr.kind {
408408
// Only lint if we use the const item inside a function.
409-
if in_constant(cx, expr.hir_id) {
409+
if is_in_const_context(cx) {
410410
return;
411411
}
412412

clippy_lints/src/option_if_let_else.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
22
use clippy_utils::sugg::Sugg;
33
use clippy_utils::{
4-
can_move_expr_to_closure, eager_or_lazy, higher, in_constant, is_else_clause, is_res_lang_ctor, peel_blocks,
5-
peel_hir_expr_while, CaptureKind,
4+
can_move_expr_to_closure, eager_or_lazy, higher, is_else_clause, is_in_const_context, is_res_lang_ctor,
5+
peel_blocks, peel_hir_expr_while, CaptureKind,
66
};
77
use rustc_errors::Applicability;
88
use rustc_hir::def::Res;
@@ -294,7 +294,7 @@ fn is_none_or_err_arm(cx: &LateContext<'_>, arm: &Arm<'_>) -> bool {
294294
impl<'tcx> LateLintPass<'tcx> for OptionIfLetElse {
295295
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &Expr<'tcx>) {
296296
// Don't lint macros and constants
297-
if expr.span.from_expansion() || in_constant(cx, expr.hir_id) {
297+
if expr.span.from_expansion() || is_in_const_context(cx) {
298298
return;
299299
}
300300

clippy_lints/src/question_mark.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use clippy_utils::diagnostics::span_lint_and_sugg;
77
use clippy_utils::source::snippet_with_applicability;
88
use clippy_utils::ty::{implements_trait, is_type_diagnostic_item};
99
use clippy_utils::{
10-
eq_expr_value, higher, in_constant, is_else_clause, is_lint_allowed, is_path_lang_item, is_res_lang_ctor,
10+
eq_expr_value, higher, is_else_clause, is_in_const_context, is_lint_allowed, is_path_lang_item, is_res_lang_ctor,
1111
pat_and_expr_can_be_question_mark, path_to_local, path_to_local_id, peel_blocks, peel_blocks_with_stmt,
1212
span_contains_comment,
1313
};
@@ -346,15 +346,13 @@ impl<'tcx> LateLintPass<'tcx> for QuestionMark {
346346
return;
347347
}
348348

349-
if !self.inside_try_block() && !in_constant(cx, stmt.hir_id) {
349+
if !self.inside_try_block() && !is_in_const_context(cx) {
350350
check_let_some_else_return_none(cx, stmt);
351351
}
352352
self.check_manual_let_else(cx, stmt);
353353
}
354354
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) {
355-
if !self.inside_try_block()
356-
&& !in_constant(cx, expr.hir_id)
357-
&& is_lint_allowed(cx, QUESTION_MARK_USED, expr.hir_id)
355+
if !self.inside_try_block() && !is_in_const_context(cx) && is_lint_allowed(cx, QUESTION_MARK_USED, expr.hir_id)
358356
{
359357
check_is_none_or_err_and_early_return(cx, expr);
360358
check_if_let_some_or_err_and_early_return(cx, expr);

0 commit comments

Comments
 (0)