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