Explain why we require _
for empty patterns
This commit is contained in:
parent
710add58e2
commit
8a49d83db7
@ -1019,6 +1019,10 @@ fn report_non_exhaustive_match<'p, 'tcx>(
|
||||
err.note("`&str` cannot be matched exhaustively, so a wildcard `_` is necessary");
|
||||
} else if cx.is_foreign_non_exhaustive_enum(ty) {
|
||||
err.note(format!("`{ty}` is marked as non-exhaustive, so a wildcard `_` is necessary to match exhaustively"));
|
||||
} else if cx.is_uninhabited(ty.inner()) && cx.tcx.features().min_exhaustive_patterns {
|
||||
// The type is uninhabited yet there is a witness: we must be in the `MaybeInvalid`
|
||||
// case.
|
||||
err.note(format!("`{ty}` is uninhabited but is not being matched by value, so a wildcard `_` is required"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -204,6 +204,7 @@ note: `Option<Void>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `Option<Void>`
|
||||
= note: `Void` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ None => {},
|
||||
@ -349,6 +350,7 @@ LL | match slice_never {
|
||||
| ^^^^^^^^^^^ pattern `&[_, ..]` not covered
|
||||
|
|
||||
= note: the matched value is of type `&[!]`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ [] => {},
|
||||
@ -484,6 +486,7 @@ note: `Option<!>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `&Option<!>`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ &None => {},
|
||||
@ -502,6 +505,7 @@ note: `Option<!>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `Option<!>`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ None => {},
|
||||
@ -520,6 +524,7 @@ note: `Result<!, !>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `Result<!, !>`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ Ok(_) => {},
|
||||
@ -538,6 +543,7 @@ note: `Result<!, !>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `Result<!, !>`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ Ok(_a) => {},
|
||||
@ -589,6 +595,7 @@ LL | match ref_never {
|
||||
| ^^^^^^^^^ pattern `&_` not covered
|
||||
|
|
||||
= note: the matched value is of type `&!`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
= note: references are always considered inhabited
|
||||
= note: match arms with guards don't count towards exhaustivity
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
@ -609,6 +616,7 @@ note: `Result<!, !>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `Result<!, !>`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ Err(_) => {},
|
||||
@ -627,6 +635,7 @@ note: `Option<Result<!, !>>` defined here
|
||||
|
|
||||
= note: not covered
|
||||
= note: the matched value is of type `Option<Result<!, !>>`
|
||||
= note: `Result<!, !>` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ None => {},
|
||||
|
@ -5,6 +5,7 @@ LL | match nevers {
|
||||
| ^^^^^^ pattern `&[_, ..]` not covered
|
||||
|
|
||||
= note: the matched value is of type `&[!]`
|
||||
= note: `!` is uninhabited but is not being matched by value, so a wildcard `_` is required
|
||||
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
||||
|
|
||||
LL ~ &[] => (),
|
||||
|
Loading…
x
Reference in New Issue
Block a user