@@ -2071,6 +2071,7 @@ impl Expr<'_> {
20712071 | ExprKind :: Tup ( _)
20722072 | ExprKind :: Type ( ..)
20732073 | ExprKind :: UnsafeBinderCast ( ..)
2074+ | ExprKind :: Use ( ..)
20742075 | ExprKind :: Err ( _) => ExprPrecedence :: Unambiguous ,
20752076
20762077 ExprKind :: DropTemps ( expr, ..) => expr. precedence ( ) ,
@@ -2117,6 +2118,7 @@ impl Expr<'_> {
21172118 ExprKind :: Path ( QPath :: TypeRelative ( ..) )
21182119 | ExprKind :: Call ( ..)
21192120 | ExprKind :: MethodCall ( ..)
2121+ | ExprKind :: Use ( ..)
21202122 | ExprKind :: Struct ( ..)
21212123 | ExprKind :: Tup ( ..)
21222124 | ExprKind :: If ( ..)
@@ -2190,7 +2192,9 @@ impl Expr<'_> {
21902192
21912193 pub fn can_have_side_effects ( & self ) -> bool {
21922194 match self . peel_drop_temps ( ) . kind {
2193- ExprKind :: Path ( _) | ExprKind :: Lit ( _) | ExprKind :: OffsetOf ( ..) => false ,
2195+ ExprKind :: Path ( _) | ExprKind :: Lit ( _) | ExprKind :: OffsetOf ( ..) | ExprKind :: Use ( ..) => {
2196+ false
2197+ }
21942198 ExprKind :: Type ( base, _)
21952199 | ExprKind :: Unary ( _, base)
21962200 | ExprKind :: Field ( base, _)
@@ -2452,6 +2456,8 @@ pub enum ExprKind<'hir> {
24522456 ///
24532457 /// [`type_dependent_def_id`]: ../../rustc_middle/ty/struct.TypeckResults.html#method.type_dependent_def_id
24542458 MethodCall ( & ' hir PathSegment < ' hir > , & ' hir Expr < ' hir > , & ' hir [ Expr < ' hir > ] , Span ) ,
2459+ /// An use expression (e.g., `var.use`).
2460+ Use ( & ' hir Expr < ' hir > , Span ) ,
24552461 /// A tuple (e.g., `(a, b, c, d)`).
24562462 Tup ( & ' hir [ Expr < ' hir > ] ) ,
24572463 /// A binary operation (e.g., `a + b`, `a * b`).
0 commit comments