@@ -160,7 +160,7 @@ impl<'a> Sugg<'a> {
160
160
Sugg :: BinOp ( AssocOp :: AssignOp ( op. node ) , get_snippet ( lhs. span ) , get_snippet ( rhs. span ) )
161
161
} ,
162
162
ExprKind :: Binary ( op, lhs, rhs) => Sugg :: BinOp (
163
- AssocOp :: from_ast_binop ( op. node ) ,
163
+ AssocOp :: Binary ( op. node ) ,
164
164
get_snippet ( lhs. span ) ,
165
165
get_snippet ( rhs. span ) ,
166
166
) ,
@@ -249,7 +249,7 @@ impl<'a> Sugg<'a> {
249
249
snippet ( rhs. span ) ,
250
250
) ,
251
251
ast:: ExprKind :: Binary ( op, ref lhs, ref rhs) => Sugg :: BinOp (
252
- AssocOp :: from_ast_binop ( op. node ) ,
252
+ AssocOp :: Binary ( op. node ) ,
253
253
snippet ( lhs. span ) ,
254
254
snippet ( rhs. span ) ,
255
255
) ,
@@ -366,30 +366,9 @@ impl<'a> Sugg<'a> {
366
366
/// Generates a string from the operator and both sides.
367
367
fn binop_to_string ( op : AssocOp , lhs : & str , rhs : & str ) -> String {
368
368
match op {
369
- AssocOp :: Add
370
- | AssocOp :: Subtract
371
- | AssocOp :: Multiply
372
- | AssocOp :: Divide
373
- | AssocOp :: Modulus
374
- | AssocOp :: LAnd
375
- | AssocOp :: LOr
376
- | AssocOp :: BitXor
377
- | AssocOp :: BitAnd
378
- | AssocOp :: BitOr
379
- | AssocOp :: ShiftLeft
380
- | AssocOp :: ShiftRight
381
- | AssocOp :: Equal
382
- | AssocOp :: Less
383
- | AssocOp :: LessEqual
384
- | AssocOp :: NotEqual
385
- | AssocOp :: Greater
386
- | AssocOp :: GreaterEqual => {
387
- format ! ( "{lhs} {} {rhs}" , op. to_ast_binop( ) . expect( "Those are AST ops" ) . as_str( ) )
388
- } ,
369
+ AssocOp :: Binary ( op) => format ! ( "{lhs} {} {rhs}" , op. as_str( ) ) ,
389
370
AssocOp :: Assign => format ! ( "{lhs} = {rhs}" ) ,
390
- AssocOp :: AssignOp ( op) => {
391
- format ! ( "{lhs} {}= {rhs}" , op. as_str( ) )
392
- } ,
371
+ AssocOp :: AssignOp ( op) => format ! ( "{lhs} {}= {rhs}" , op. as_str( ) ) ,
393
372
AssocOp :: As => format ! ( "{lhs} as {rhs}" ) ,
394
373
AssocOp :: DotDot => format ! ( "{lhs}..{rhs}" ) ,
395
374
AssocOp :: DotDotEq => format ! ( "{lhs}..={rhs}" ) ,
@@ -476,16 +455,17 @@ impl Neg for Sugg<'_> {
476
455
impl < ' a > Not for Sugg < ' a > {
477
456
type Output = Sugg < ' a > ;
478
457
fn not ( self ) -> Sugg < ' a > {
479
- use AssocOp :: { Equal , Greater , GreaterEqual , Less , LessEqual , NotEqual } ;
458
+ use AssocOp :: Binary ;
459
+ use ast:: BinOpKind :: { Eq , Gt , Ge , Lt , Le , Ne } ;
480
460
481
461
if let Sugg :: BinOp ( op, lhs, rhs) = self {
482
462
let to_op = match op {
483
- Equal => NotEqual ,
484
- NotEqual => Equal ,
485
- Less => GreaterEqual ,
486
- GreaterEqual => Less ,
487
- Greater => LessEqual ,
488
- LessEqual => Greater ,
463
+ Binary ( Eq ) => Binary ( Ne ) ,
464
+ Binary ( Ne ) => Binary ( Eq ) ,
465
+ Binary ( Lt ) => Binary ( Ge ) ,
466
+ Binary ( Ge ) => Binary ( Lt ) ,
467
+ Binary ( Gt ) => Binary ( Le ) ,
468
+ Binary ( Le ) => Binary ( Gt ) ,
489
469
_ => return make_unop ( "!" , Sugg :: BinOp ( op, lhs, rhs) ) ,
490
470
} ;
491
471
Sugg :: BinOp ( to_op, lhs, rhs)
@@ -537,15 +517,21 @@ pub fn make_unop(op: &str, expr: Sugg<'_>) -> Sugg<'static> {
537
517
pub fn make_assoc ( op : AssocOp , lhs : & Sugg < ' _ > , rhs : & Sugg < ' _ > ) -> Sugg < ' static > {
538
518
/// Returns `true` if the operator is a shift operator `<<` or `>>`.
539
519
fn is_shift ( op : AssocOp ) -> bool {
540
- matches ! ( op, AssocOp :: ShiftLeft | AssocOp :: ShiftRight )
520
+ matches ! ( op, AssocOp :: Binary ( ast :: BinOpKind :: Shl | ast :: BinOpKind :: Shr ) )
541
521
}
542
522
543
523
/// Returns `true` if the operator is an arithmetic operator
544
524
/// (i.e., `+`, `-`, `*`, `/`, `%`).
545
525
fn is_arith ( op : AssocOp ) -> bool {
546
526
matches ! (
547
527
op,
548
- AssocOp :: Add | AssocOp :: Subtract | AssocOp :: Multiply | AssocOp :: Divide | AssocOp :: Modulus
528
+ AssocOp :: Binary (
529
+ ast:: BinOpKind :: Add
530
+ | ast:: BinOpKind :: Sub
531
+ | ast:: BinOpKind :: Mul
532
+ | ast:: BinOpKind :: Div
533
+ | ast:: BinOpKind :: Rem
534
+ )
549
535
)
550
536
}
551
537
@@ -577,9 +563,9 @@ pub fn make_assoc(op: AssocOp, lhs: &Sugg<'_>, rhs: &Sugg<'_>) -> Sugg<'static>
577
563
Sugg :: BinOp ( op, lhs. into ( ) , rhs. into ( ) )
578
564
}
579
565
580
- /// Convenience wrapper around `make_assoc` and `AssocOp::from_ast_binop `.
566
+ /// Convenience wrapper around `make_assoc` and `AssocOp::Binary `.
581
567
pub fn make_binop ( op : ast:: BinOpKind , lhs : & Sugg < ' _ > , rhs : & Sugg < ' _ > ) -> Sugg < ' static > {
582
- make_assoc ( AssocOp :: from_ast_binop ( op) , lhs, rhs)
568
+ make_assoc ( AssocOp :: Binary ( op) , lhs, rhs)
583
569
}
584
570
585
571
#[ derive( PartialEq , Eq , Clone , Copy ) ]
@@ -604,16 +590,15 @@ enum Associativity {
604
590
/// associative.
605
591
#[ must_use]
606
592
fn associativity ( op : AssocOp ) -> Associativity {
607
- use rustc_ast:: util:: parser:: AssocOp :: {
608
- Add , As , Assign , AssignOp , BitAnd , BitOr , BitXor , Divide , DotDot , DotDotEq , Equal , Greater , GreaterEqual , LAnd ,
609
- LOr , Less , LessEqual , Modulus , Multiply , NotEqual , ShiftLeft , ShiftRight , Subtract ,
593
+ use rustc_ast:: util:: parser:: AssocOp :: { As , Assign , AssignOp , Binary , DotDot , DotDotEq } ;
594
+ use ast :: BinOpKind :: {
595
+ Add , BitAnd , BitOr , BitXor , Div , Eq , Gt , Ge , And , Or , Lt , Le , Rem , Mul , Ne , Shl , Shr , Sub ,
610
596
} ;
611
597
612
598
match op {
613
599
Assign | AssignOp ( _) => Associativity :: Right ,
614
- Add | BitAnd | BitOr | BitXor | LAnd | LOr | Multiply | As => Associativity :: Both ,
615
- Divide | Equal | Greater | GreaterEqual | Less | LessEqual | Modulus | NotEqual | ShiftLeft | ShiftRight
616
- | Subtract => Associativity :: Left ,
600
+ Binary ( Add | BitAnd | BitOr | BitXor | And | Or | Mul ) | As => Associativity :: Both ,
601
+ Binary ( Div | Eq | Gt | Ge | Lt | Le | Rem | Ne | Shl | Shr | Sub ) => Associativity :: Left ,
617
602
DotDot | DotDotEq => Associativity :: None ,
618
603
}
619
604
}
0 commit comments