| // 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() {} |