|
1 | 1 | use clippy_config::msrvs::{self, Msrv};
|
2 | 2 | use clippy_utils::diagnostics::span_lint_and_sugg;
|
3 |
| -use clippy_utils::macros::{is_panic, macro_backtrace}; |
| 3 | +use clippy_utils::macros::macro_backtrace; |
4 | 4 | use clippy_utils::qualify_min_const_fn::is_min_const_fn;
|
5 | 5 | use clippy_utils::source::snippet;
|
6 | 6 | use clippy_utils::{fn_has_unsatisfiable_preds, peel_blocks};
|
7 | 7 | use rustc_errors::Applicability;
|
8 | 8 | use rustc_hir::{intravisit, Expr, ExprKind};
|
9 | 9 | use rustc_lint::{LateContext, LateLintPass};
|
10 | 10 | use rustc_session::impl_lint_pass;
|
11 |
| -use rustc_span::sym::thread_local_macro; |
| 11 | +use rustc_span::sym::{self, thread_local_macro}; |
12 | 12 |
|
13 | 13 | declare_clippy_lint! {
|
14 | 14 | /// ### What it does
|
@@ -71,16 +71,23 @@ fn is_thread_local_initializer(
|
71 | 71 | }
|
72 | 72 |
|
73 | 73 | fn is_unreachable(cx: &LateContext<'_>, expr: &Expr<'_>) -> bool {
|
74 |
| - let Some(macro_call) = macro_backtrace(expr.span).next() else { |
75 |
| - return false; |
76 |
| - }; |
77 |
| - if is_panic(cx, macro_call.def_id) { |
78 |
| - return !cx.tcx.hir().is_inside_const_context(expr.hir_id); |
| 74 | + if let Some(macro_call) = macro_backtrace(expr.span).next() |
| 75 | + && let Some(diag_name) = cx.tcx.get_diagnostic_name(macro_call.def_id) |
| 76 | + { |
| 77 | + return (matches!( |
| 78 | + diag_name, |
| 79 | + sym::core_panic_macro |
| 80 | + | sym::std_panic_macro |
| 81 | + | sym::core_panic_2015_macro |
| 82 | + | sym::std_panic_2015_macro |
| 83 | + | sym::core_panic_2021_macro |
| 84 | + ) && !cx.tcx.hir().is_inside_const_context(expr.hir_id)) |
| 85 | + || matches!( |
| 86 | + diag_name, |
| 87 | + sym::unimplemented_macro | sym::todo_macro | sym::unreachable_macro | sym::unreachable_2015_macro |
| 88 | + ); |
79 | 89 | }
|
80 |
| - matches!( |
81 |
| - cx.tcx.item_name(macro_call.def_id).as_str(), |
82 |
| - "todo" | "unimplemented" | "unreachable" |
83 |
| - ) |
| 90 | + false |
84 | 91 | }
|
85 | 92 |
|
86 | 93 | #[inline]
|
|
0 commit comments