@@ -7,7 +7,7 @@ use clippy_utils::{
7
7
peel_middle_ty_refs,
8
8
} ;
9
9
use core:: mem;
10
- use rustc_ast:: util:: parser:: { PREC_PREFIX , PREC_UNAMBIGUOUS } ;
10
+ use rustc_ast:: util:: parser:: ExprPrecedence ;
11
11
use rustc_data_structures:: fx:: FxIndexMap ;
12
12
use rustc_errors:: Applicability ;
13
13
use rustc_hir:: def_id:: DefId ;
@@ -963,7 +963,7 @@ fn report<'tcx>(
963
963
// expr_str (the suggestion) is never shown if is_final_ufcs is true, since it's
964
964
// `expr.kind == ExprKind::Call`. Therefore, this is, afaik, always unnecessary.
965
965
/*
966
- expr_str = if !expr_is_macro_call && is_final_ufcs && expr.precedence() < PREC_PREFIX {
966
+ expr_str = if !expr_is_macro_call && is_final_ufcs && expr.precedence() < ExprPrecedence::Prefix {
967
967
Cow::Owned(format!("({expr_str})"))
968
968
} else {
969
969
expr_str
@@ -999,13 +999,13 @@ fn report<'tcx>(
999
999
data. first_expr . span ,
1000
1000
state. msg ,
1001
1001
|diag| {
1002
- let ( precedence , calls_field ) = match cx. tcx . parent_hir_node ( data. first_expr . hir_id ) {
1002
+ let needs_paren = match cx. tcx . parent_hir_node ( data. first_expr . hir_id ) {
1003
1003
Node :: Expr ( e) => match e. kind {
1004
- ExprKind :: Call ( callee, _) if callee. hir_id != data. first_expr . hir_id => ( 0 , false ) ,
1005
- ExprKind :: Call ( ..) => ( PREC_UNAMBIGUOUS , matches ! ( expr. kind, ExprKind :: Field ( ..) ) ) ,
1006
- _ => ( e . precedence ( ) , false ) ,
1004
+ ExprKind :: Call ( callee, _) if callee. hir_id != data. first_expr . hir_id => false ,
1005
+ ExprKind :: Call ( ..) => expr . precedence ( ) < ExprPrecedence :: Unambiguous || matches ! ( expr. kind, ExprKind :: Field ( ..) ) ,
1006
+ _ => expr . precedence ( ) < e . precedence ( ) ,
1007
1007
} ,
1008
- _ => ( 0 , false ) ,
1008
+ _ => false ,
1009
1009
} ;
1010
1010
let is_in_tuple = matches ! (
1011
1011
get_parent_expr( cx, data. first_expr) ,
@@ -1016,7 +1016,7 @@ fn report<'tcx>(
1016
1016
) ;
1017
1017
1018
1018
let sugg = if !snip_is_macro
1019
- && ( calls_field || expr . precedence ( ) < precedence )
1019
+ && needs_paren
1020
1020
&& !has_enclosing_paren ( & snip)
1021
1021
&& !is_in_tuple
1022
1022
{
@@ -1049,16 +1049,16 @@ fn report<'tcx>(
1049
1049
}
1050
1050
}
1051
1051
1052
- let ( prefix, precedence ) = match mutability {
1052
+ let ( prefix, needs_paren ) = match mutability {
1053
1053
Some ( mutability) if !ty. is_ref ( ) => {
1054
1054
let prefix = match mutability {
1055
1055
Mutability :: Not => "&" ,
1056
1056
Mutability :: Mut => "&mut " ,
1057
1057
} ;
1058
- ( prefix, PREC_PREFIX )
1058
+ ( prefix, expr . precedence ( ) < ExprPrecedence :: Prefix )
1059
1059
} ,
1060
- None if !ty. is_ref ( ) && data. adjusted_ty . is_ref ( ) => ( "&" , 0 ) ,
1061
- _ => ( "" , 0 ) ,
1060
+ None if !ty. is_ref ( ) && data. adjusted_ty . is_ref ( ) => ( "&" , false ) ,
1061
+ _ => ( "" , false ) ,
1062
1062
} ;
1063
1063
span_lint_hir_and_then (
1064
1064
cx,
@@ -1070,7 +1070,7 @@ fn report<'tcx>(
1070
1070
let mut app = Applicability :: MachineApplicable ;
1071
1071
let ( snip, snip_is_macro) =
1072
1072
snippet_with_context ( cx, expr. span , data. first_expr . span . ctxt ( ) , ".." , & mut app) ;
1073
- let sugg = if !snip_is_macro && expr . precedence ( ) < precedence && !has_enclosing_paren ( & snip) {
1073
+ let sugg = if !snip_is_macro && needs_paren && !has_enclosing_paren ( & snip) {
1074
1074
format ! ( "{prefix}({snip})" )
1075
1075
} else {
1076
1076
format ! ( "{prefix}{snip}" )
@@ -1157,7 +1157,7 @@ impl<'tcx> Dereferencing<'tcx> {
1157
1157
} ,
1158
1158
Some ( parent) if !parent. span . from_expansion ( ) => {
1159
1159
// Double reference might be needed at this point.
1160
- if parent. precedence ( ) == PREC_UNAMBIGUOUS {
1160
+ if parent. precedence ( ) == ExprPrecedence :: Unambiguous {
1161
1161
// Parentheses would be needed here, don't lint.
1162
1162
* outer_pat = None ;
1163
1163
} else {
0 commit comments