@@ -8,7 +8,7 @@ use ra_arena::Arena;
88use ra_syntax:: {
99 ast:: {
1010 self , ArgListOwner , ArrayExprKind , LiteralKind , LoopBodyOwner , ModuleItemOwner , NameOwner ,
11- TypeAscriptionOwner ,
11+ SlicePatComponents , TypeAscriptionOwner ,
1212 } ,
1313 AstNode , AstPtr ,
1414} ;
@@ -591,7 +591,7 @@ where
591591 let args = p. args ( ) . map ( |p| self . collect_pat ( p) ) . collect ( ) ;
592592 Pat :: Tuple ( args)
593593 }
594- ast:: Pat :: PlaceholderPat ( _) => Pat :: Wild ,
594+ ast:: Pat :: PlaceholderPat ( _) | ast :: Pat :: DotDotPat ( _ ) => Pat :: Wild ,
595595 ast:: Pat :: RecordPat ( p) => {
596596 let path = p. path ( ) . and_then ( |path| self . expander . parse_path ( path) ) ;
597597 let record_field_pat_list =
@@ -616,12 +616,20 @@ where
616616
617617 Pat :: Record { path, args : fields }
618618 }
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+ }
619628
620629 // FIXME: implement
621- ast:: Pat :: DotDotPat ( _) => Pat :: Missing ,
622630 ast:: Pat :: BoxPat ( _) => Pat :: Missing ,
623631 ast:: Pat :: LiteralPat ( _) => Pat :: Missing ,
624- ast:: Pat :: SlicePat ( _ ) | ast :: Pat :: RangePat ( _) => Pat :: Missing ,
632+ ast:: Pat :: RangePat ( _) => Pat :: Missing ,
625633 } ;
626634 let ptr = AstPtr :: new ( & pat) ;
627635 self . alloc_pat ( pattern, Either :: Left ( ptr) )
0 commit comments