// Matching against NaN should result in an error #![allow(unused)] const NAN: f64 = f64::NAN; #[derive(PartialEq, Eq)] struct MyType(T); const C: MyType = MyType(f32::NAN); fn main() { let x = NAN; match x { NAN => {}, //~ ERROR cannot use NaN in patterns _ => {}, }; match [x, 1.0] { [NAN, _] => {}, //~ ERROR cannot use NaN in patterns _ => {}, }; match MyType(1.0f32) { C => {}, //~ ERROR cannot use NaN in patterns _ => {}, } // Also cover range patterns match x { NAN..=1.0 => {}, //~ ERROR cannot use NaN in patterns -1.0..=NAN => {}, //~ ERROR cannot use NaN in patterns NAN.. => {}, //~ ERROR cannot use NaN in patterns ..NAN => {}, //~ ERROR cannot use NaN in patterns _ => {}, }; }