@@ -12,7 +12,7 @@ use utils::{get_item_name, get_parent_expr, implements_trait, in_macro, is_integ
12
12
span_lint, span_lint_and_then, walk_ptrs_ty, last_path_segment, iter_input_pats, in_constant,
13
13
match_trait_method, paths} ;
14
14
use utils:: sugg:: Sugg ;
15
- use syntax:: ast:: { LitKind , CRATE_NODE_ID } ;
15
+ use syntax:: ast:: { LitKind , CRATE_NODE_ID , FloatTy } ;
16
16
17
17
/// **What it does:** Checks for function arguments and let bindings denoted as `ref`.
18
18
///
@@ -403,23 +403,41 @@ fn is_allowed(cx: &LateContext, expr: &Expr) -> bool {
403
403
let res = ConstContext :: new ( cx. tcx , cx. param_env . and ( substs) , cx. tables ) . eval ( expr) ;
404
404
if let Ok ( ConstVal :: Float ( val) ) = res {
405
405
use std:: cmp:: Ordering ;
406
- match val {
407
- val @ ConstFloat :: F32 ( _) => {
408
- let zero = ConstFloat :: F32 ( 0.0 ) ;
406
+ match val. ty {
407
+ FloatTy :: F32 => {
408
+ let zero = ConstFloat {
409
+ ty : FloatTy :: F32 ,
410
+ bits : 0.0f32 . to_bits ( ) as u128 ,
411
+ } ;
409
412
410
- let infinity = ConstFloat :: F32 ( :: std:: f32:: INFINITY ) ;
413
+ let infinity = ConstFloat {
414
+ ty : FloatTy :: F32 ,
415
+ bits : :: std:: f32:: INFINITY . to_bits ( ) as u128 ,
416
+ } ;
411
417
412
- let neg_infinity = ConstFloat :: F32 ( :: std:: f32:: NEG_INFINITY ) ;
418
+ let neg_infinity = ConstFloat {
419
+ ty : FloatTy :: F32 ,
420
+ bits : :: std:: f32:: NEG_INFINITY . to_bits ( ) as u128 ,
421
+ } ;
413
422
414
423
val. try_cmp ( zero) == Ok ( Ordering :: Equal ) || val. try_cmp ( infinity) == Ok ( Ordering :: Equal ) ||
415
424
val. try_cmp ( neg_infinity) == Ok ( Ordering :: Equal )
416
425
} ,
417
- val @ ConstFloat :: F64 ( _) => {
418
- let zero = ConstFloat :: F64 ( 0.0 ) ;
426
+ FloatTy :: F64 => {
427
+ let zero = ConstFloat {
428
+ ty : FloatTy :: F64 ,
429
+ bits : 0.0f64 . to_bits ( ) as u128 ,
430
+ } ;
419
431
420
- let infinity = ConstFloat :: F64 ( :: std:: f64:: INFINITY ) ;
432
+ let infinity = ConstFloat {
433
+ ty : FloatTy :: F64 ,
434
+ bits : :: std:: f64:: INFINITY . to_bits ( ) as u128 ,
435
+ } ;
421
436
422
- let neg_infinity = ConstFloat :: F64 ( :: std:: f64:: NEG_INFINITY ) ;
437
+ let neg_infinity = ConstFloat {
438
+ ty : FloatTy :: F64 ,
439
+ bits : :: std:: f64:: NEG_INFINITY . to_bits ( ) as u128 ,
440
+ } ;
423
441
424
442
val. try_cmp ( zero) == Ok ( Ordering :: Equal ) || val. try_cmp ( infinity) == Ok ( Ordering :: Equal ) ||
425
443
val. try_cmp ( neg_infinity) == Ok ( Ordering :: Equal )
0 commit comments