@@ -1385,7 +1385,7 @@ impl<'hir> Pat<'hir> {
13851385 use PatKind :: * ;
13861386 match self . kind {
13871387 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) ,
13891389 Struct ( _, fields, _) => fields. iter ( ) . all ( |field| field. pat . walk_short_ ( it) ) ,
13901390 TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . all ( |p| p. walk_short_ ( it) ) ,
13911391 Slice ( before, slice, after) => {
@@ -1412,7 +1412,7 @@ impl<'hir> Pat<'hir> {
14121412 use PatKind :: * ;
14131413 match self . kind {
14141414 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) ,
14161416 Struct ( _, fields, _) => fields. iter ( ) . for_each ( |field| field. pat . walk_ ( it) ) ,
14171417 TupleStruct ( _, s, _) | Tuple ( s, _) | Or ( s) => s. iter ( ) . for_each ( |p| p. walk_ ( it) ) ,
14181418 Slice ( before, slice, after) => {
@@ -1564,6 +1564,9 @@ pub enum PatKind<'hir> {
15641564 /// A literal.
15651565 Lit ( & ' hir Expr < ' hir > ) ,
15661566
1567+ /// A guard pattern (e.g., `x if guard(x)`).
1568+ Guard ( & ' hir Pat < ' hir > , & ' hir Expr < ' hir > ) ,
1569+
15671570 /// A range pattern (e.g., `1..=2` or `1..2`).
15681571 Range ( Option < & ' hir Expr < ' hir > > , Option < & ' hir Expr < ' hir > > , RangeEnd ) ,
15691572
0 commit comments