- let expr_ctxt = expr.span.ctxt();
- let (some_expr, some_pat, pat_ref_count, is_wild_none) = match (
- try_parse_pattern(cx, arm1.pat, expr_ctxt),
- try_parse_pattern(cx, arm2.pat, expr_ctxt),
- ) {
- (Some(OptionPat::Wild), Some(OptionPat::Some { pattern, ref_count }))
- if is_none_expr(cx, arm1.body) =>
- {
- (arm2.body, pattern, ref_count, true)
- },
- (Some(OptionPat::None), Some(OptionPat::Some { pattern, ref_count }))
- if is_none_expr(cx, arm1.body) =>
- {
- (arm2.body, pattern, ref_count, false)
- },
- (Some(OptionPat::Some { pattern, ref_count }), Some(OptionPat::Wild))
- if is_none_expr(cx, arm2.body) =>
- {
- (arm1.body, pattern, ref_count, true)
- },
- (Some(OptionPat::Some { pattern, ref_count }), Some(OptionPat::None))
- if is_none_expr(cx, arm2.body) =>
- {
- (arm1.body, pattern, ref_count, false)
- },
- _ => return,
- };
+fn manage_lint<'tcx>(
+ cx: &LateContext<'tcx>,
+ expr: &'tcx Expr<'_>,
+ then: (&'tcx PatKind<'_>, &'tcx Expr<'_>),
+ r#else: (&'tcx PatKind<'_>, &'tcx Expr<'_>),
+ scrut: &'tcx Expr<'_>,
+) {
+ if in_external_macro(cx.sess(), expr.span) || in_constant(cx, expr.hir_id) {
+ return;
+ }