@@ -1387,7 +1387,7 @@ impl<'hir> Pat<'hir> {
1387
1387
use PatKind :: * ;
1388
1388
match self . kind {
1389
1389
Wild | Never | Lit ( _) | Range ( ..) | Binding ( .., None ) | Path ( _) | Err ( _) => true ,
1390
- Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) => s. walk_short_ ( it) ,
1390
+ Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) | Guard ( s , _ ) => s. walk_short_ ( it) ,
1391
1391
Struct ( _, fields, _) => fields. iter ( ) . all ( |field| field. pat . walk_short_ ( it) ) ,
1392
1392
TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . all ( |p| p. walk_short_ ( it) ) ,
1393
1393
Slice ( before, slice, after) => {
@@ -1414,7 +1414,7 @@ impl<'hir> Pat<'hir> {
1414
1414
use PatKind :: * ;
1415
1415
match self . kind {
1416
1416
Wild | Never | Lit ( _) | Range ( ..) | Binding ( .., None ) | Path ( _) | Err ( _) => { }
1417
- Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) => s. walk_ ( it) ,
1417
+ Box ( s) | Deref ( s) | Ref ( s, _) | Binding ( .., Some ( s) ) | Guard ( s , _ ) => s. walk_ ( it) ,
1418
1418
Struct ( _, fields, _) => fields. iter ( ) . for_each ( |field| field. pat . walk_ ( it) ) ,
1419
1419
TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . for_each ( |p| p. walk_ ( it) ) ,
1420
1420
Slice ( before, slice, after) => {
@@ -1566,6 +1566,9 @@ pub enum PatKind<'hir> {
1566
1566
/// A literal.
1567
1567
Lit ( & ' hir Expr < ' hir > ) ,
1568
1568
1569
+ /// A guard pattern (e.g., `x if guard(x)`).
1570
+ Guard ( & ' hir Pat < ' hir > , & ' hir Expr < ' hir > ) ,
1571
+
1569
1572
/// A range pattern (e.g., `1..=2` or `1..2`).
1570
1573
Range ( Option < & ' hir Expr < ' hir > > , Option < & ' hir Expr < ' hir > > , RangeEnd ) ,
1571
1574
0 commit comments