@@ -1144,7 +1144,7 @@ impl<'hir> Pat<'hir> {
1144
1144
use PatKind :: * ;
1145
1145
match self . kind {
1146
1146
Wild | Never | Lit ( _) | Range ( ..) | Binding ( .., None ) | Path ( _) | Err ( _) => true ,
1147
- Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) => s. walk_short_ ( it) ,
1147
+ Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) | Guard ( s , _ ) => s. walk_short_ ( it) ,
1148
1148
Struct ( _, fields, _) => fields. iter ( ) . all ( |field| field. pat . walk_short_ ( it) ) ,
1149
1149
TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . all ( |p| p. walk_short_ ( it) ) ,
1150
1150
Slice ( before, slice, after) => {
@@ -1171,7 +1171,7 @@ impl<'hir> Pat<'hir> {
1171
1171
use PatKind :: * ;
1172
1172
match self . kind {
1173
1173
Wild | Never | Lit ( _) | Range ( ..) | Binding ( .., None ) | Path ( _) | Err ( _) => { }
1174
- Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) => s. walk_ ( it) ,
1174
+ Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) | Guard ( s , _ ) => s. walk_ ( it) ,
1175
1175
Struct ( _, fields, _) => fields. iter ( ) . for_each ( |field| field. pat . walk_ ( it) ) ,
1176
1176
TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . for_each ( |p| p. walk_ ( it) ) ,
1177
1177
Slice ( before, slice, after) => {
@@ -1323,6 +1323,9 @@ pub enum PatKind<'hir> {
1323
1323
/// A literal.
1324
1324
Lit ( & ' hir Expr < ' hir > ) ,
1325
1325
1326
+ /// A guard pattern (e.g., `x if guard(x)`).
1327
+ Guard ( & ' hir Pat < ' hir > , & ' hir Expr < ' hir > ) ,
1328
+
1326
1329
/// A range pattern (e.g., `1..=2` or `1..2`).
1327
1330
Range ( Option < & ' hir Expr < ' hir > > , Option < & ' hir Expr < ' hir > > , RangeEnd ) ,
1328
1331
0 commit comments