Skip to content

Commit

Permalink
Add some extra edge case tests
Browse files Browse the repository at this point in the history
  • Loading branch information
varkor committed Aug 21, 2018
1 parent dec5563 commit 6971c5d
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/librustc_mir/hair/pattern/_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1441,7 +1441,8 @@ fn split_grouped_constructors<'p, 'a: 'p, 'tcx: 'a>(
let ctor_range = IntRange::from_ctor(tcx, &ctor).unwrap();

/// Represents a border between 2 integers. Because the intervals spanning borders
/// must be able to cover every integer, we need 2^128 + 1 such borders.
/// must be able to cover every integer, we need to be able to represent
/// 2^128 + 1 such borders.
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
enum Border {
JustBefore(u128),
Expand Down
8 changes: 8 additions & 0 deletions src/test/ui/exhaustive_integer_patterns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,12 @@ fn main() {
match 0u128 { //~ ERROR non-exhaustive patterns
0 ..= LIM => {}
}

match 0u128 { //~ ERROR non-exhaustive patterns
0 ..= 4 => {}
}

match 0u128 { //~ ERROR non-exhaustive patterns
4 ..= u128::MAX => {}
}
}
14 changes: 13 additions & 1 deletion src/test/ui/exhaustive_integer_patterns.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,18 @@ error[E0004]: non-exhaustive patterns: `340282366920938463463374607431768211455u
LL | match 0u128 { //~ ERROR non-exhaustive patterns
| ^^^^^ pattern `340282366920938463463374607431768211455u128` not covered

error: aborting due to 11 previous errors
error[E0004]: non-exhaustive patterns: `5u128..=340282366920938463463374607431768211455u128` not covered
--> $DIR/exhaustive_integer_patterns.rs:166:11
|
LL | match 0u128 { //~ ERROR non-exhaustive patterns
| ^^^^^ pattern `5u128..=340282366920938463463374607431768211455u128` not covered

error[E0004]: non-exhaustive patterns: `0u128..=3u128` not covered
--> $DIR/exhaustive_integer_patterns.rs:170:11
|
LL | match 0u128 { //~ ERROR non-exhaustive patterns
| ^^^^^ pattern `0u128..=3u128` not covered

error: aborting due to 13 previous errors

For more information about this error, try `rustc --explain E0004`.

0 comments on commit 6971c5d

Please sign in to comment.