@@ -8,7 +8,7 @@ use ra_arena::Arena;
8
8
use ra_syntax:: {
9
9
ast:: {
10
10
self , ArgListOwner , ArrayExprKind , LiteralKind , LoopBodyOwner , ModuleItemOwner , NameOwner ,
11
- TypeAscriptionOwner ,
11
+ SlicePatComponents , TypeAscriptionOwner ,
12
12
} ,
13
13
AstNode , AstPtr ,
14
14
} ;
@@ -591,7 +591,7 @@ where
591
591
let args = p. args ( ) . map ( |p| self . collect_pat ( p) ) . collect ( ) ;
592
592
Pat :: Tuple ( args)
593
593
}
594
- ast:: Pat :: PlaceholderPat ( _) => Pat :: Wild ,
594
+ ast:: Pat :: PlaceholderPat ( _) | ast :: Pat :: DotDotPat ( _ ) => Pat :: Wild ,
595
595
ast:: Pat :: RecordPat ( p) => {
596
596
let path = p. path ( ) . and_then ( |path| self . expander . parse_path ( path) ) ;
597
597
let record_field_pat_list =
@@ -616,12 +616,20 @@ where
616
616
617
617
Pat :: Record { path, args : fields }
618
618
}
619
+ ast:: Pat :: SlicePat ( p) => {
620
+ let SlicePatComponents { prefix, slice, suffix } = p. components ( ) ;
621
+
622
+ Pat :: Slice {
623
+ prefix : prefix. into_iter ( ) . map ( |p| self . collect_pat ( p) ) . collect ( ) ,
624
+ slice : slice. map ( |p| self . collect_pat ( p) ) ,
625
+ suffix : suffix. into_iter ( ) . map ( |p| self . collect_pat ( p) ) . collect ( ) ,
626
+ }
627
+ }
619
628
620
629
// FIXME: implement
621
- ast:: Pat :: DotDotPat ( _) => Pat :: Missing ,
622
630
ast:: Pat :: BoxPat ( _) => Pat :: Missing ,
623
631
ast:: Pat :: LiteralPat ( _) => Pat :: Missing ,
624
- ast:: Pat :: SlicePat ( _ ) | ast :: Pat :: RangePat ( _) => Pat :: Missing ,
632
+ ast:: Pat :: RangePat ( _) => Pat :: Missing ,
625
633
} ;
626
634
let ptr = AstPtr :: new ( & pat) ;
627
635
self . alloc_pat ( pattern, Either :: Left ( ptr) )
0 commit comments