- 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,
- };