@@ -1993,6 +1993,7 @@ impl Expr<'_> {
1993
1993
| ExprKind :: Tup ( _)
1994
1994
| ExprKind :: Type ( ..)
1995
1995
| ExprKind :: UnsafeBinderCast ( ..)
1996
+ | ExprKind :: Use ( ..)
1996
1997
| ExprKind :: Err ( _) => ExprPrecedence :: Unambiguous ,
1997
1998
1998
1999
ExprKind :: DropTemps ( expr, ..) => expr. precedence ( ) ,
@@ -2039,6 +2040,7 @@ impl Expr<'_> {
2039
2040
ExprKind :: Path ( QPath :: TypeRelative ( ..) )
2040
2041
| ExprKind :: Call ( ..)
2041
2042
| ExprKind :: MethodCall ( ..)
2043
+ | ExprKind :: Use ( ..)
2042
2044
| ExprKind :: Struct ( ..)
2043
2045
| ExprKind :: Tup ( ..)
2044
2046
| ExprKind :: If ( ..)
@@ -2100,7 +2102,9 @@ impl Expr<'_> {
2100
2102
2101
2103
pub fn can_have_side_effects ( & self ) -> bool {
2102
2104
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
+ }
2104
2108
ExprKind :: Type ( base, _)
2105
2109
| ExprKind :: Unary ( _, base)
2106
2110
| ExprKind :: Field ( base, _)
@@ -2323,6 +2327,8 @@ pub enum ExprKind<'hir> {
2323
2327
///
2324
2328
/// [`type_dependent_def_id`]: ../../rustc_middle/ty/struct.TypeckResults.html#method.type_dependent_def_id
2325
2329
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 ) ,
2326
2332
/// A tuple (e.g., `(a, b, c, d)`).
2327
2333
Tup ( & ' hir [ Expr < ' hir > ] ) ,
2328
2334
/// A binary operation (e.g., `a + b`, `a * b`).
0 commit comments