@@ -2166,6 +2166,7 @@ impl Expr<'_> {
21662166 | ExprKind :: Tup ( _)
21672167 | ExprKind :: Type ( ..)
21682168 | ExprKind :: UnsafeBinderCast ( ..)
2169+ | ExprKind :: Use ( ..)
21692170 | ExprKind :: Err ( _) => ExprPrecedence :: Unambiguous ,
21702171
21712172 ExprKind :: DropTemps ( expr, ..) => expr. precedence ( ) ,
@@ -2212,6 +2213,7 @@ impl Expr<'_> {
22122213 ExprKind :: Path ( QPath :: TypeRelative ( ..) )
22132214 | ExprKind :: Call ( ..)
22142215 | ExprKind :: MethodCall ( ..)
2216+ | ExprKind :: Use ( ..)
22152217 | ExprKind :: Struct ( ..)
22162218 | ExprKind :: Tup ( ..)
22172219 | ExprKind :: If ( ..)
@@ -2285,7 +2287,9 @@ impl Expr<'_> {
22852287
22862288 pub fn can_have_side_effects ( & self ) -> bool {
22872289 match self . peel_drop_temps ( ) . kind {
2288- ExprKind :: Path ( _) | ExprKind :: Lit ( _) | ExprKind :: OffsetOf ( ..) => false ,
2290+ ExprKind :: Path ( _) | ExprKind :: Lit ( _) | ExprKind :: OffsetOf ( ..) | ExprKind :: Use ( ..) => {
2291+ false
2292+ }
22892293 ExprKind :: Type ( base, _)
22902294 | ExprKind :: Unary ( _, base)
22912295 | ExprKind :: Field ( base, _)
@@ -2547,6 +2551,8 @@ pub enum ExprKind<'hir> {
25472551 ///
25482552 /// [`type_dependent_def_id`]: ../../rustc_middle/ty/struct.TypeckResults.html#method.type_dependent_def_id
25492553 MethodCall ( & ' hir PathSegment < ' hir > , & ' hir Expr < ' hir > , & ' hir [ Expr < ' hir > ] , Span ) ,
2554+ /// An use expression (e.g., `var.use`).
2555+ Use ( & ' hir Expr < ' hir > , Span ) ,
25502556 /// A tuple (e.g., `(a, b, c, d)`).
25512557 Tup ( & ' hir [ Expr < ' hir > ] ) ,
25522558 /// A binary operation (e.g., `a + b`, `a * b`).
0 commit comments