When finding a match expr with multiple arms that requires more, suggest it
Given ```rust match Some(42) { Some(0) => {} Some(1) => {} } ``` suggest ```rust match Some(42) { Some(0) => {} Some(1) => {} None | Some(_) => todo!(), } ```
This commit is contained in:
parent
2383858f34
commit
084ca79e7c
28 changed files with 263 additions and 50 deletions
|
@ -604,6 +604,21 @@ fn non_exhaustive_match<'p, 'tcx>(
|
|||
format!("{}{}{} => todo!()", comma, pre_indentation, pattern),
|
||||
));
|
||||
}
|
||||
[.., prev, last] if prev.span.ctxt() == last.span.ctxt() => {
|
||||
if let Ok(snippet) = sm.span_to_snippet(prev.span.between(last.span)) {
|
||||
let comma =
|
||||
if matches!(last.body.kind, hir::ExprKind::Block(..)) { "" } else { "," };
|
||||
suggestion = Some((
|
||||
last.span.shrink_to_hi(),
|
||||
format!(
|
||||
"{}{}{} => todo!()",
|
||||
comma,
|
||||
snippet.strip_prefix(",").unwrap_or(&snippet),
|
||||
pattern
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue