828bfb2c61
Code like this is fixed now: ``` fn foo(p: [u8, ..4]) { match p { [a, b, c, d] => {} }; } ``` Invalid constructors are not reported as errors yet: ``` fn foo(p: [u8, ..4]) { match p { [_, _, _] => {} // this should be error [_, _, _, _, _, .._] => {} // and this _ => {} } } ``` Issue #8311 is partially fixed by this commit. Fixed-length arrays in let statement are not yet allowed: ``` let [a, b, c] = [1, 2, 3]; // still fails ```
29 lines
592 B
Rust
29 lines
592 B
Rust
fn a() {
|
|
let x = [1, 2, 3];
|
|
match x {
|
|
[1, 2, 4] => ::std::util::unreachable(),
|
|
[0, 2, 3, .._] => ::std::util::unreachable(),
|
|
[0, .._, 3] => ::std::util::unreachable(),
|
|
[0, .._] => ::std::util::unreachable(),
|
|
[1, 2, 3] => (),
|
|
[_, _, _] => ::std::util::unreachable(),
|
|
}
|
|
match x {
|
|
[.._] => (),
|
|
}
|
|
match x {
|
|
[_, _, _, .._] => (),
|
|
}
|
|
match x {
|
|
[a, b, c] => {
|
|
assert_eq!(1, a);
|
|
assert_eq!(2, b);
|
|
assert_eq!(3, c);
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn main() {
|
|
a();
|
|
}
|