@@ -171,9 +171,11 @@ pub trait AstBuilder {
171
171
span : Span ,
172
172
ident : ast:: Ident ,
173
173
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 > ;
177
179
fn pat_tuple ( & self , span : Span , pats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > ;
178
180
179
181
fn pat_some ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > ;
@@ -802,10 +804,10 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
802
804
let binding_expr = self . expr_ident ( sp, binding_variable) ;
803
805
804
806
// 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( ) ] ) ;
806
808
807
809
// 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] ) ;
809
811
let err_inner_expr = self . expr_call ( sp, self . expr_path ( err_path) ,
810
812
vec ! ( binding_expr. clone( ) ) ) ;
811
813
// return Err(__try_var)
@@ -842,18 +844,16 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
842
844
let pat = PatKind :: Ident ( bm, Spanned { span : span, node : ident} , None ) ;
843
845
self . pat ( span, pat)
844
846
}
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 :: Struct ( path, Vec :: new ( ) , false )
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) )
852
849
}
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 ) )
857
857
}
858
858
fn pat_tuple ( & self , span : Span , pats : Vec < P < ast:: Pat > > ) -> P < ast:: Pat > {
859
859
self . pat ( span, PatKind :: Tuple ( pats, None ) )
@@ -862,25 +862,25 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
862
862
fn pat_some ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > {
863
863
let some = self . std_path ( & [ "option" , "Option" , "Some" ] ) ;
864
864
let path = self . path_global ( span, some) ;
865
- self . pat_enum ( span, path, vec ! ( pat) )
865
+ self . pat_tuple_struct ( span, path, vec ! [ pat] )
866
866
}
867
867
868
868
fn pat_none ( & self , span : Span ) -> P < ast:: Pat > {
869
869
let some = self . std_path ( & [ "option" , "Option" , "None" ] ) ;
870
870
let path = self . path_global ( span, some) ;
871
- self . pat_enum ( span, path, vec ! ( ) )
871
+ self . pat_path ( span, path)
872
872
}
873
873
874
874
fn pat_ok ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > {
875
875
let some = self . std_path ( & [ "result" , "Result" , "Ok" ] ) ;
876
876
let path = self . path_global ( span, some) ;
877
- self . pat_enum ( span, path, vec ! ( pat) )
877
+ self . pat_tuple_struct ( span, path, vec ! [ pat] )
878
878
}
879
879
880
880
fn pat_err ( & self , span : Span , pat : P < ast:: Pat > ) -> P < ast:: Pat > {
881
881
let some = self . std_path ( & [ "result" , "Result" , "Err" ] ) ;
882
882
let path = self . path_global ( span, some) ;
883
- self . pat_enum ( span, path, vec ! ( pat) )
883
+ self . pat_tuple_struct ( span, path, vec ! [ pat] )
884
884
}
885
885
886
886
fn arm ( & self , _span : Span , pats : Vec < P < ast:: Pat > > , expr : P < ast:: Expr > ) -> ast:: Arm {
0 commit comments