| //@ check-pass | 
 |  | 
 | #![feature(f16, f128)] | 
 |  | 
 | fn main() { | 
 |     f16(); | 
 |     f32(); | 
 |     f64(); | 
 |     f128(); | 
 | } | 
 |  | 
 | const TEST: bool = 5f32 == f32::NAN; | 
 | //~^ WARN incorrect NaN comparison | 
 |  | 
 | fn f16() { | 
 |     macro_rules! number { () => { 5f16 }; } | 
 |     let x = number!(); | 
 |     x == f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x != f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x < f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x > f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x <= f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x >= f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     number!() == f16::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     f16::NAN != number!(); | 
 |     //~^ WARN incorrect NaN comparison | 
 | } | 
 |  | 
 | fn f32() { | 
 |     macro_rules! number { () => { 5f32 }; } | 
 |     let x = number!(); | 
 |     x == f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x != f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x < f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x > f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x <= f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x >= f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     number!() == f32::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     f32::NAN != number!(); | 
 |     //~^ WARN incorrect NaN comparison | 
 | } | 
 |  | 
 | fn f64() { | 
 |     macro_rules! number { () => { 5f64 }; } | 
 |     let x = number!(); | 
 |     x == f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x != f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x < f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x > f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x <= f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x >= f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     number!() == f64::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     f64::NAN != number!(); | 
 |     //~^ WARN incorrect NaN comparison | 
 | } | 
 |  | 
 | fn f128() { | 
 |     macro_rules! number { () => { 5f128 }; } | 
 |     let x = number!(); | 
 |     x == f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x != f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x < f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x > f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x <= f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     x >= f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     number!() == f128::NAN; | 
 |     //~^ WARN incorrect NaN comparison | 
 |     f128::NAN != number!(); | 
 |     //~^ WARN incorrect NaN comparison | 
 | } |