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