@@ -171,9 +171,11 @@ pub trait AstBuilder {
171171 span : Span ,
172172 ident : ast:: Ident ,
173173 bm : ast:: BindingMode ) -> P < ast:: Pat > ;
174- fn pat_enum ( & self , span : Span , path : ast:: Path , subpats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > ;
175- fn pat_struct ( & self , span : Span ,
176- path : ast:: Path , field_pats : Vec < Spanned < ast:: FieldPat > > ) -> P < ast:: Pat > ;
174+ fn pat_path ( & self , span : Span , path : ast:: Path ) -> P < ast:: Pat > ;
175+ fn pat_tuple_struct ( & self , span : Span , path : ast:: Path ,
176+ subpats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > ;
177+ fn pat_struct ( & self , span : Span , path : ast:: Path ,
178+ field_pats : Vec < Spanned < ast:: FieldPat > > ) -> P < ast:: Pat > ;
177179 fn pat_tuple ( & self , span : Span , pats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > ;
178180
179181 fn pat_some ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > ;
@@ -802,10 +804,10 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
802804 let binding_expr = self . expr_ident ( sp, binding_variable) ;
803805
804806 // Ok(__try_var) pattern
805- let ok_pat = self . pat_enum ( sp, ok_path, vec ! ( binding_pat. clone( ) ) ) ;
807+ let ok_pat = self . pat_tuple_struct ( sp, ok_path, vec ! [ binding_pat. clone( ) ] ) ;
806808
807809 // Err(__try_var) (pattern and expression resp.)
808- let err_pat = self . pat_enum ( sp, err_path. clone ( ) , vec ! ( binding_pat) ) ;
810+ let err_pat = self . pat_tuple_struct ( sp, err_path. clone ( ) , vec ! [ binding_pat] ) ;
809811 let err_inner_expr = self . expr_call ( sp, self . expr_path ( err_path) ,
810812 vec ! ( binding_expr. clone( ) ) ) ;
811813 // return Err(__try_var)
@@ -842,18 +844,16 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
842844 let pat = PatKind :: Ident ( bm, Spanned { span : span, node : ident} , None ) ;
843845 self . pat ( span, pat)
844846 }
845- fn pat_enum ( & self , span : Span , path : ast:: Path , subpats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > {
846- let pat = if subpats. is_empty ( ) {
847- PatKind :: Path ( None , path)
848- } else {
849- PatKind :: TupleStruct ( path, subpats, None )
850- } ;
851- self . pat ( span, pat)
847+ fn pat_path ( & self , span : Span , path : ast:: Path ) -> P < ast:: Pat > {
848+ self . pat ( span, PatKind :: Path ( None , path) )
852849 }
853- fn pat_struct ( & self , span : Span ,
854- path : ast:: Path , field_pats : Vec < Spanned < ast:: FieldPat > > ) -> P < ast:: Pat > {
855- let pat = PatKind :: Struct ( path, field_pats, false ) ;
856- self . pat ( span, pat)
850+ fn pat_tuple_struct ( & self , span : Span , path : ast:: Path ,
851+ subpats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > {
852+ self . pat ( span, PatKind :: TupleStruct ( path, subpats, None ) )
853+ }
854+ fn pat_struct ( & self , span : Span , path : ast:: Path ,
855+ field_pats : Vec < Spanned < ast:: FieldPat > > ) -> P < ast:: Pat > {
856+ self . pat ( span, PatKind :: Struct ( path, field_pats, false ) )
857857 }
858858 fn pat_tuple ( & self , span : Span , pats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > {
859859 self . pat ( span, PatKind :: Tuple ( pats, None ) )
@@ -862,25 +862,25 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
862862 fn pat_some ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > {
863863 let some = self . std_path ( & [ "option" , "Option" , "Some" ] ) ;
864864 let path = self . path_global ( span, some) ;
865- self . pat_enum ( span, path, vec ! ( pat) )
865+ self . pat_tuple_struct ( span, path, vec ! [ pat] )
866866 }
867867
868868 fn pat_none ( & self , span : Span ) -> P < ast:: Pat > {
869869 let some = self . std_path ( & [ "option" , "Option" , "None" ] ) ;
870870 let path = self . path_global ( span, some) ;
871- self . pat_enum ( span, path, vec ! ( ) )
871+ self . pat_path ( span, path)
872872 }
873873
874874 fn pat_ok ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > {
875875 let some = self . std_path ( & [ "result" , "Result" , "Ok" ] ) ;
876876 let path = self . path_global ( span, some) ;
877- self . pat_enum ( span, path, vec ! ( pat) )
877+ self . pat_tuple_struct ( span, path, vec ! [ pat] )
878878 }
879879
880880 fn pat_err ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > {
881881 let some = self . std_path ( & [ "result" , "Result" , "Err" ] ) ;
882882 let path = self . path_global ( span, some) ;
883- self . pat_enum ( span, path, vec ! ( pat) )
883+ self . pat_tuple_struct ( span, path, vec ! [ pat] )
884884 }
885885
886886 fn arm ( & self , _span : Span , pats : Vec < P < ast:: Pat > > , expr : P < ast:: Expr > ) -> ast:: Arm {
0 commit comments