37 lines
693 B
Rust
37 lines
693 B
Rust
// Test that we do not infer the expected types of patterns to an array
|
|
// if we're in a refutable pattern.
|
|
#![allow(unused_variables)]
|
|
|
|
struct Zeroes;
|
|
|
|
impl Into<[usize; 3]> for Zeroes {
|
|
fn into(self) -> [usize; 3] {
|
|
[0; 3]
|
|
}
|
|
}
|
|
|
|
fn let_else() {
|
|
let [a, b, c] = Zeroes.into() else {
|
|
//~^ ERROR type annotations needed
|
|
unreachable!();
|
|
};
|
|
}
|
|
|
|
fn if_let() {
|
|
if let [a, b, c] = Zeroes.into() {
|
|
//~^ ERROR type annotations needed
|
|
unreachable!();
|
|
}
|
|
}
|
|
|
|
fn if_let_else() {
|
|
if let [a, b, c] = Zeroes.into() {
|
|
//~^ ERROR type annotations needed
|
|
unreachable!();
|
|
} else {
|
|
unreachable!();
|
|
}
|
|
}
|
|
|
|
fn main() {}
|