@@ -358,6 +358,10 @@ fn collect_expr_take_handle_fields(expr: &HirExpr, fields: &mut Vec<TakeHandleFi
358358 HirExpr :: Effect { value, .. } | HirExpr :: Manage { value, .. } => {
359359 collect_expr_take_handle_fields ( value, fields) ;
360360 }
361+ HirExpr :: Binary { left, right, .. } => {
362+ collect_expr_take_handle_fields ( left, fields) ;
363+ collect_expr_take_handle_fields ( right, fields) ;
364+ }
361365 HirExpr :: Field { base, .. } => collect_expr_take_handle_fields ( base, fields) ,
362366 HirExpr :: Call { args, .. } => {
363367 for arg in args {
@@ -585,6 +589,10 @@ fn collect_ordered_moved_uses_from_expr(
585589 collect_ordered_moved_uses_from_expr ( value, state, moved_uses) ;
586590 state. apply_move_events ( events) ;
587591 }
592+ HirExpr :: Binary { left, right, .. } => {
593+ collect_ordered_moved_uses_from_expr ( left, state, moved_uses) ;
594+ collect_ordered_moved_uses_from_expr ( right, state, moved_uses) ;
595+ }
588596 HirExpr :: Field { base, .. } => {
589597 collect_ordered_moved_uses_from_expr ( base, state, moved_uses) ;
590598 }
@@ -714,6 +722,10 @@ fn collect_retained_closure_captures_from_expr(
714722 HirExpr :: Effect { value, .. } | HirExpr :: Manage { value, .. } => {
715723 collect_retained_closure_captures_from_expr ( value, state, captures) ;
716724 }
725+ HirExpr :: Binary { left, right, .. } => {
726+ collect_retained_closure_captures_from_expr ( left, state, captures) ;
727+ collect_retained_closure_captures_from_expr ( right, state, captures) ;
728+ }
717729 HirExpr :: Field { base, .. } => {
718730 collect_retained_closure_captures_from_expr ( base, state, captures) ;
719731 }
@@ -737,6 +749,7 @@ fn retained_closure_arg(expr: &HirExpr) -> Option<(&HirBlock, &Span)> {
737749 } => retained_closure_arg ( value) ,
738750 HirExpr :: Effect { .. }
739751 | HirExpr :: Manage { .. }
752+ | HirExpr :: Binary { .. }
740753 | HirExpr :: Ident { .. }
741754 | HirExpr :: Number { .. }
742755 | HirExpr :: String { .. }
@@ -767,6 +780,7 @@ fn hir_expr_span(expr: &HirExpr) -> &Span {
767780 HirExpr :: Ident { span, .. }
768781 | HirExpr :: Number { span, .. }
769782 | HirExpr :: String { span, .. }
783+ | HirExpr :: Binary { span, .. }
770784 | HirExpr :: Field { span, .. }
771785 | HirExpr :: Call { span, .. }
772786 | HirExpr :: Effect { span, .. }
@@ -854,6 +868,10 @@ fn collect_expr_resource_escapes(
854868 HirExpr :: Effect { value, .. } | HirExpr :: Manage { value, .. } => {
855869 collect_expr_resource_escapes ( value, escapes_by_with_span) ;
856870 }
871+ HirExpr :: Binary { left, right, .. } => {
872+ collect_expr_resource_escapes ( left, escapes_by_with_span) ;
873+ collect_expr_resource_escapes ( right, escapes_by_with_span) ;
874+ }
857875 HirExpr :: Field { base, .. } => collect_expr_resource_escapes ( base, escapes_by_with_span) ,
858876 HirExpr :: Closure { body, .. } => collect_block_resource_escapes ( body, escapes_by_with_span) ,
859877 HirExpr :: Ident { .. }
@@ -953,6 +971,10 @@ fn collect_resource_escapes_in_expr(
953971 }
954972 }
955973 HirExpr :: Effect { value, .. } => collect_resource_escapes_in_expr ( binding, value, escapes) ,
974+ HirExpr :: Binary { left, right, .. } => {
975+ collect_resource_escapes_in_expr ( binding, left, escapes) ;
976+ collect_resource_escapes_in_expr ( binding, right, escapes) ;
977+ }
956978 HirExpr :: Field { base, .. } => collect_resource_escapes_in_expr ( binding, base, escapes) ,
957979 HirExpr :: Closure { body, .. } => collect_resource_escapes_in_block ( binding, body, escapes) ,
958980 HirExpr :: Ident { .. }
@@ -1065,6 +1087,10 @@ fn collect_expr_managed_closure_uses(
10651087 HirExpr :: Effect { value, .. } | HirExpr :: Manage { value, .. } => {
10661088 collect_expr_managed_closure_uses ( value, closures) ;
10671089 }
1090+ HirExpr :: Binary { left, right, .. } => {
1091+ collect_expr_managed_closure_uses ( left, closures) ;
1092+ collect_expr_managed_closure_uses ( right, closures) ;
1093+ }
10681094 HirExpr :: Field { base, .. } => collect_expr_managed_closure_uses ( base, closures) ,
10691095 HirExpr :: Closure { body, .. } => collect_block_managed_closure_uses ( body, closures) ,
10701096 HirExpr :: Ident { .. }
@@ -1177,6 +1203,10 @@ fn collect_hir_expr_effect_events(expr: &HirExpr, events: &mut Vec<HirEffectEven
11771203 events. extend ( expr_events. iter ( ) . cloned ( ) ) ;
11781204 collect_hir_expr_effect_events ( value, events) ;
11791205 }
1206+ HirExpr :: Binary { left, right, .. } => {
1207+ collect_hir_expr_effect_events ( left, events) ;
1208+ collect_hir_expr_effect_events ( right, events) ;
1209+ }
11801210 HirExpr :: Field { base, .. } => collect_hir_expr_effect_events ( base, events) ,
11811211 HirExpr :: Closure { .. }
11821212 | HirExpr :: Ident { .. }
@@ -1198,6 +1228,10 @@ fn collect_hir_expr_idents(expr: &HirExpr, uses: &mut Vec<(String, Span)>) {
11981228 HirExpr :: Effect { value, .. } | HirExpr :: Manage { value, .. } => {
11991229 collect_hir_expr_idents ( value, uses) ;
12001230 }
1231+ HirExpr :: Binary { left, right, .. } => {
1232+ collect_hir_expr_idents ( left, uses) ;
1233+ collect_hir_expr_idents ( right, uses) ;
1234+ }
12011235 HirExpr :: Closure { body, .. } => collect_hir_block_idents ( body, uses) ,
12021236 HirExpr :: Number { .. } | HirExpr :: String { .. } | HirExpr :: Unknown ( _) => { }
12031237 }
@@ -1596,6 +1630,7 @@ fn local_flow_step_binding(statement: &HirStmt) -> Option<LocalFlowBinding> {
15961630 HirExpr :: Ident { name, span, .. } => Some ( ( name. clone ( ) , span. clone ( ) ) ) ,
15971631 HirExpr :: Number { .. }
15981632 | HirExpr :: String { .. }
1633+ | HirExpr :: Binary { .. }
15991634 | HirExpr :: Field { .. }
16001635 | HirExpr :: Call { .. }
16011636 | HirExpr :: Effect { .. }
@@ -1641,6 +1676,7 @@ fn hir_expr_type_name(expr: &HirExpr) -> Option<&str> {
16411676 | HirExpr :: Effect { type_name, .. }
16421677 | HirExpr :: Manage { type_name, .. } => type_name. as_deref ( ) ,
16431678 HirExpr :: Field { access, .. } => access. type_name . as_deref ( ) ,
1679+ HirExpr :: Binary { .. } => None ,
16441680 HirExpr :: Number { .. }
16451681 | HirExpr :: String { .. }
16461682 | HirExpr :: Closure { .. }
0 commit comments