@@ -1131,7 +1131,7 @@ impl<'hir> Pat<'hir> {
1131
1131
use PatKind :: * ;
1132
1132
match self . kind {
1133
1133
Wild | Never | Lit ( _) | Range ( ..) | Binding ( .., None ) | Path ( _) | Err ( _) => true ,
1134
- Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) => s. walk_short_ ( it) ,
1134
+ Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) | Guard ( s , _ ) => s. walk_short_ ( it) ,
1135
1135
Struct ( _, fields, _) => fields. iter ( ) . all ( |field| field. pat . walk_short_ ( it) ) ,
1136
1136
TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . all ( |p| p. walk_short_ ( it) ) ,
1137
1137
Slice ( before, slice, after) => {
@@ -1158,7 +1158,7 @@ impl<'hir> Pat<'hir> {
1158
1158
use PatKind :: * ;
1159
1159
match self . kind {
1160
1160
Wild | Never | Lit ( _) | Range ( ..) | Binding ( .., None ) | Path ( _) | Err ( _) => { }
1161
- Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) => s. walk_ ( it) ,
1161
+ Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) | Guard ( s , _ ) => s. walk_ ( it) ,
1162
1162
Struct ( _, fields, _) => fields. iter ( ) . for_each ( |field| field. pat . walk_ ( it) ) ,
1163
1163
TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . for_each ( |p| p. walk_ ( it) ) ,
1164
1164
Slice ( before, slice, after) => {
@@ -1310,6 +1310,9 @@ pub enum PatKind<'hir> {
1310
1310
/// A literal.
1311
1311
Lit ( & ' hir Expr < ' hir > ) ,
1312
1312
1313
+ /// A guard pattern (e.g., `x if guard(x)`).
1314
+ Guard ( & ' hir Pat < ' hir > , & ' hir Expr < ' hir > ) ,
1315
+
1313
1316
/// A range pattern (e.g., `1..=2` or `1..2`).
1314
1317
Range ( Option < & ' hir Expr < ' hir > > , Option < & ' hir Expr < ' hir > > , RangeEnd ) ,
1315
1318
0 commit comments