Skip to content

Commit

Permalink
update tests, improve variable names
Browse files Browse the repository at this point in the history
  • Loading branch information
lcnr committed Mar 30, 2020
1 parent 40c5eef commit a3df1db
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 12 deletions.
4 changes: 2 additions & 2 deletions src/librustc_error_codes/error_codes/E0730.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Example of erroneous code:
fn is_123<const N: usize>(x: [u32; N]) -> bool {
match x {
[1, 2, 3] => true, // error: cannot pattern-match on an
// array without a fixed length
[1, 2, ..] => true, // error: cannot pattern-match on an
// array without a fixed length
_ => false
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/librustc_typeck/check/pat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1355,7 +1355,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
) -> Ty<'tcx> {
let err = self.tcx.types.err;
let expected = self.structurally_resolved_type(span, expected);
let (element_ty, slice_ty, expected) = match expected.kind {
let (element_ty, slice_ty, inferred) = match expected.kind {
// An array, so we might have something like `let [a, b, c] = [0, 1, 2];`.
ty::Array(element_ty, len) => {
let min = before.len() as u64 + after.len() as u64;
Expand Down Expand Up @@ -1385,7 +1385,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
for elt in after {
self.check_pat(&elt, element_ty, def_bm, ti);
}
expected
inferred
}

/// Type check the length of an array pattern.
Expand Down
11 changes: 11 additions & 0 deletions src/test/ui/array-slice-vec/match_arr_unknown_len.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#![feature(const_generics)]
//~^ WARN the feature `const_generics` is incomplete and may cause the compiler to crash

fn is_123<const N: usize>(x: [u32; N]) -> bool {
match x {
[1, 2] => true, //~ ERROR mismatched types
_ => false
}
}

fn main() {}
20 changes: 20 additions & 0 deletions src/test/ui/array-slice-vec/match_arr_unknown_len.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
warning: the feature `const_generics` is incomplete and may cause the compiler to crash
--> $DIR/match_arr_unknown_len.rs:1:12
|
LL | #![feature(const_generics)]
| ^^^^^^^^^^^^^^
|
= note: `#[warn(incomplete_features)]` on by default

error[E0308]: mismatched types
--> $DIR/match_arr_unknown_len.rs:6:9
|
LL | [1, 2] => true,
| ^^^^^^ expected `2usize`, found `N`
|
= note: expected array `[u32; 2]`
found array `[u32; _]`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/E0730.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

fn is_123<const N: usize>(x: [u32; N]) -> bool {
match x {
[1, 2, 3] => true, //~ ERROR mismatched types
[1, 2, ..] => true, //~ ERROR cannot pattern-match on an array without a fixed length
_ => false
}
}
Expand Down
11 changes: 4 additions & 7 deletions src/test/ui/error-codes/E0730.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,12 @@ LL | #![feature(const_generics)]
|
= note: `#[warn(incomplete_features)]` on by default

error[E0308]: mismatched types
error[E0730]: cannot pattern-match on an array without a fixed length
--> $DIR/E0730.rs:6:9
|
LL | [1, 2, 3] => true,
| ^^^^^^^^^ expected `3usize`, found `N`
|
= note: expected array `[u32; 3]`
found array `[u32; _]`
LL | [1, 2, ..] => true,
| ^^^^^^^^^^

error: aborting due to previous error

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

0 comments on commit a3df1db

Please sign in to comment.