Rollup merge of #79145 - camelid:clippy-fix-panics, r=flip1995
Fix handling of panic calls This should make Clippy more resilient and will unblock #78343. This PR is made against rust-lang/rust to avoid the need for a subtree sync at ``@flip1995's`` suggestion in rust-lang/rust-clippy#6310. r? ``@flip1995`` cc ``@m-ou-se``
This commit is contained in:
@@ -1196,7 +1196,7 @@ pub fn has_iter_method(cx: &LateContext<'_>, probably_ref_ty: Ty<'_>) -> Option<
|
||||
/// Usage:
|
||||
///
|
||||
/// ```rust,ignore
|
||||
/// if let Some(args) = match_function_call(cx, begin_panic_call, &paths::BEGIN_PANIC);
|
||||
/// if let Some(args) = match_function_call(cx, cmp_max_call, &paths::CMP_MAX);
|
||||
/// ```
|
||||
pub fn match_function_call<'tcx>(
|
||||
cx: &LateContext<'tcx>,
|
||||
@@ -1231,6 +1231,24 @@ pub fn match_def_path<'tcx>(cx: &LateContext<'tcx>, did: DefId, syms: &[&str]) -
|
||||
cx.match_def_path(did, &syms)
|
||||
}
|
||||
|
||||
pub fn match_panic_call<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) -> Option<&'tcx [Expr<'tcx>]> {
|
||||
match_function_call(cx, expr, &paths::BEGIN_PANIC)
|
||||
.or_else(|| match_function_call(cx, expr, &paths::BEGIN_PANIC_FMT))
|
||||
.or_else(|| match_function_call(cx, expr, &paths::PANIC_ANY))
|
||||
.or_else(|| match_function_call(cx, expr, &paths::PANICKING_PANIC))
|
||||
.or_else(|| match_function_call(cx, expr, &paths::PANICKING_PANIC_FMT))
|
||||
.or_else(|| match_function_call(cx, expr, &paths::PANICKING_PANIC_STR))
|
||||
}
|
||||
|
||||
pub fn match_panic_def_id(cx: &LateContext<'_>, did: DefId) -> bool {
|
||||
match_def_path(cx, did, &paths::BEGIN_PANIC)
|
||||
|| match_def_path(cx, did, &paths::BEGIN_PANIC_FMT)
|
||||
|| match_def_path(cx, did, &paths::PANIC_ANY)
|
||||
|| match_def_path(cx, did, &paths::PANICKING_PANIC)
|
||||
|| match_def_path(cx, did, &paths::PANICKING_PANIC_FMT)
|
||||
|| match_def_path(cx, did, &paths::PANICKING_PANIC_STR)
|
||||
}
|
||||
|
||||
/// Returns the list of condition expressions and the list of blocks in a
|
||||
/// sequence of `if/else`.
|
||||
/// E.g., this returns `([a, b], [c, d, e])` for the expression
|
||||
|
||||
Reference in New Issue
Block a user