@@ -1993,6 +1993,7 @@ impl Expr<'_> {
19931993 | ExprKind :: Tup ( _)
19941994 | ExprKind :: Type ( ..)
19951995 | ExprKind :: UnsafeBinderCast ( ..)
1996+ | ExprKind :: Use ( ..)
19961997 | ExprKind :: Err ( _) => ExprPrecedence :: Unambiguous ,
19971998
19981999 ExprKind :: DropTemps ( expr, ..) => expr. precedence ( ) ,
@@ -2039,6 +2040,7 @@ impl Expr<'_> {
20392040 ExprKind :: Path ( QPath :: TypeRelative ( ..) )
20402041 | ExprKind :: Call ( ..)
20412042 | ExprKind :: MethodCall ( ..)
2043+ | ExprKind :: Use ( ..)
20422044 | ExprKind :: Struct ( ..)
20432045 | ExprKind :: Tup ( ..)
20442046 | ExprKind :: If ( ..)
@@ -2100,7 +2102,9 @@ impl Expr<'_> {
21002102
21012103 pub fn can_have_side_effects ( & self ) -> bool {
21022104 match self . peel_drop_temps ( ) . kind {
2103- ExprKind :: Path ( _) | ExprKind :: Lit ( _) | ExprKind :: OffsetOf ( ..) => false ,
2105+ ExprKind :: Path ( _) | ExprKind :: Lit ( _) | ExprKind :: OffsetOf ( ..) | ExprKind :: Use ( ..) => {
2106+ false
2107+ }
21042108 ExprKind :: Type ( base, _)
21052109 | ExprKind :: Unary ( _, base)
21062110 | ExprKind :: Field ( base, _)
@@ -2323,6 +2327,8 @@ pub enum ExprKind<'hir> {
23232327 ///
23242328 /// [`type_dependent_def_id`]: ../../rustc_middle/ty/struct.TypeckResults.html#method.type_dependent_def_id
23252329 MethodCall ( & ' hir PathSegment < ' hir > , & ' hir Expr < ' hir > , & ' hir [ Expr < ' hir > ] , Span ) ,
2330+ /// An use expression (e.g., `var.use`).
2331+ Use ( & ' hir Expr < ' hir > , Span ) ,
23262332 /// A tuple (e.g., `(a, b, c, d)`).
23272333 Tup ( & ' hir [ Expr < ' hir > ] ) ,
23282334 /// A binary operation (e.g., `a + b`, `a * b`).
0 commit comments