From eeefbb7617c85cb1b51a4758f3d4743f01966578 Mon Sep 17 00:00:00 2001 From: iobtl Date: Tue, 6 Jul 2021 15:14:53 +0800 Subject: [PATCH] fix false positive (panic message) with assert macro using message parameter --- clippy_lints/src/panic_unimplemented.rs | 4 +++- tests/ui/panicking_macros.rs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/clippy_lints/src/panic_unimplemented.rs b/clippy_lints/src/panic_unimplemented.rs index 1a680e7607e..dc28874c16e 100644 --- a/clippy_lints/src/panic_unimplemented.rs +++ b/clippy_lints/src/panic_unimplemented.rs @@ -74,7 +74,9 @@ declare_lint_pass!(PanicUnimplemented => [UNIMPLEMENTED, UNREACHABLE, TODO, PANI impl<'tcx> LateLintPass<'tcx> for PanicUnimplemented { fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) { - if match_panic_call(cx, expr).is_some() && is_expn_of(expr.span, "debug_assert").is_none() { + if match_panic_call(cx, expr).is_some() + && (is_expn_of(expr.span, "debug_assert").is_none() && is_expn_of(expr.span, "assert").is_none()) + { let span = get_outer_span(expr); if is_expn_of(expr.span, "unimplemented").is_some() { span_lint( diff --git a/tests/ui/panicking_macros.rs b/tests/ui/panicking_macros.rs index 93b236f7473..73380646462 100644 --- a/tests/ui/panicking_macros.rs +++ b/tests/ui/panicking_macros.rs @@ -43,6 +43,18 @@ fn core_versions() { unreachable!(); } +fn assert() { + assert!(true); + assert_eq!(true, true); + assert_ne!(true, false); +} + +fn assert_msg() { + assert!(true, "this should not panic"); + assert_eq!(true, true, "this should not panic"); + assert_ne!(true, false, "this should not panic"); +} + fn debug_assert() { debug_assert!(true); debug_assert_eq!(true, true); @@ -61,4 +73,8 @@ fn main() { unimplemented(); unreachable(); core_versions(); + assert(); + assert_msg(); + debug_assert(); + debug_assert_msg(); }