diff options
| -rw-r--r-- | clippy_lints/src/manual_unwrap_or_default.rs | 4 | ||||
| -rw-r--r-- | tests/ui/manual_unwrap_or_default.fixed | 7 | ||||
| -rw-r--r-- | tests/ui/manual_unwrap_or_default.rs | 7 |
3 files changed, 16 insertions, 2 deletions
diff --git a/clippy_lints/src/manual_unwrap_or_default.rs b/clippy_lints/src/manual_unwrap_or_default.rs index fc6b0d6f9f6..8f189cf6e09 100644 --- a/clippy_lints/src/manual_unwrap_or_default.rs +++ b/clippy_lints/src/manual_unwrap_or_default.rs @@ -7,9 +7,9 @@ use rustc_session::declare_lint_pass; use rustc_span::sym; use clippy_utils::diagnostics::span_lint_and_sugg; -use clippy_utils::is_default_equivalent; use clippy_utils::source::snippet_opt; use clippy_utils::ty::implements_trait; +use clippy_utils::{in_constant, is_default_equivalent}; declare_clippy_lint! { /// ### What it does @@ -172,7 +172,7 @@ fn handle_if_let<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { impl<'tcx> LateLintPass<'tcx> for ManualUnwrapOrDefault { fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { - if expr.span.from_expansion() { + if expr.span.from_expansion() || in_constant(cx, expr.hir_id) { return; } if !handle_match(cx, expr) { diff --git a/tests/ui/manual_unwrap_or_default.fixed b/tests/ui/manual_unwrap_or_default.fixed index b24967242eb..182c9b317b6 100644 --- a/tests/ui/manual_unwrap_or_default.fixed +++ b/tests/ui/manual_unwrap_or_default.fixed @@ -26,3 +26,10 @@ unsafe fn no_deref_ptr(a: Option<i32>, b: *const Option<i32>) -> i32 { _ => 0, } } + +const fn issue_12568(opt: Option<bool>) -> bool { + match opt { + Some(s) => s, + None => false, + } +} diff --git a/tests/ui/manual_unwrap_or_default.rs b/tests/ui/manual_unwrap_or_default.rs index ed5e54b4e14..e8eaddc1d14 100644 --- a/tests/ui/manual_unwrap_or_default.rs +++ b/tests/ui/manual_unwrap_or_default.rs @@ -50,3 +50,10 @@ unsafe fn no_deref_ptr(a: Option<i32>, b: *const Option<i32>) -> i32 { _ => 0, } } + +const fn issue_12568(opt: Option<bool>) -> bool { + match opt { + Some(s) => s, + None => false, + } +} |
