diff --git a/src/test/ui/exhaustive_integer_patterns.rs b/src/test/ui/exhaustive_integer_patterns.rs index e8f2affbec3..294481389f7 100644 --- a/src/test/ui/exhaustive_integer_patterns.rs +++ b/src/test/ui/exhaustive_integer_patterns.rs @@ -120,4 +120,16 @@ fn main() { match 0i128 { i128::MIN ..= i128::MAX => {} // ok } + + // Make sure that guards don't factor into the exhaustiveness checks. + match 0u8 { //~ ERROR non-exhaustive patterns + 0 .. 128 => {} + 128 ..= 255 if true => {} + } + + match 0u8 { + 0 .. 128 => {} + 128 ..= 255 if false => {} + 128 ..= 255 => {} // ok, because previous arm was guarded + } } diff --git a/src/test/ui/exhaustive_integer_patterns.stderr b/src/test/ui/exhaustive_integer_patterns.stderr index 0f7ab8688c6..a2ed9416b50 100644 --- a/src/test/ui/exhaustive_integer_patterns.stderr +++ b/src/test/ui/exhaustive_integer_patterns.stderr @@ -46,6 +46,12 @@ error[E0004]: non-exhaustive patterns: `0i16` not covered LL | match 0i16 { //~ ERROR non-exhaustive patterns | ^^^^ pattern `0i16` not covered -error: aborting due to 7 previous errors +error[E0004]: non-exhaustive patterns: `128u8..=255u8` not covered + --> $DIR/exhaustive_integer_patterns.rs:125:11 + | +LL | match 0u8 { //~ ERROR non-exhaustive patterns + | ^^^ pattern `128u8..=255u8` not covered + +error: aborting due to 8 previous errors For more information about this error, try `rustc --explain E0004`.