@@ -191,15 +191,13 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
191
191
item_segment : & hir:: PathSegment )
192
192
-> SubstsRef < ' tcx >
193
193
{
194
- let ( substs, assoc_bindings, _) = item_segment. with_generic_args ( |generic_args| {
195
- self . create_substs_for_ast_path (
196
- span,
197
- def_id,
198
- generic_args,
199
- item_segment. infer_args ,
200
- None ,
201
- )
202
- } ) ;
194
+ let ( substs, assoc_bindings, _) = self . create_substs_for_ast_path (
195
+ span,
196
+ def_id,
197
+ item_segment. generic_args ( ) ,
198
+ item_segment. infer_args ,
199
+ None ,
200
+ ) ;
203
201
204
202
assoc_bindings. first ( ) . map ( |b| Self :: prohibit_assoc_ty_binding ( self . tcx ( ) , b. span ) ) ;
205
203
@@ -874,8 +872,8 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
874
872
let trait_def = self . tcx ( ) . trait_def ( trait_def_id) ;
875
873
876
874
if !self . tcx ( ) . features ( ) . unboxed_closures &&
877
- trait_segment. with_generic_args ( | generic_args| generic_args . parenthesized )
878
- != trait_def . paren_sugar {
875
+ trait_segment. generic_args ( ) . parenthesized != trait_def . paren_sugar
876
+ {
879
877
// For now, require that parenthetical notation be used only with `Fn()` etc.
880
878
let msg = if trait_def. paren_sugar {
881
879
"the precise format of `Fn`-family traits' type parameters is subject to change. \
@@ -887,13 +885,11 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
887
885
span, GateIssue :: Language , msg) ;
888
886
}
889
887
890
- trait_segment. with_generic_args ( |generic_args| {
891
- self . create_substs_for_ast_path ( span,
892
- trait_def_id,
893
- generic_args,
894
- trait_segment. infer_args ,
895
- Some ( self_ty) )
896
- } )
888
+ self . create_substs_for_ast_path ( span,
889
+ trait_def_id,
890
+ trait_segment. generic_args ( ) ,
891
+ trait_segment. infer_args ,
892
+ Some ( self_ty) )
897
893
}
898
894
899
895
fn trait_defines_associated_type_named ( & self ,
@@ -1765,47 +1761,45 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
1765
1761
& self , segments : T ) -> bool {
1766
1762
let mut has_err = false ;
1767
1763
for segment in segments {
1768
- segment. with_generic_args ( |generic_args| {
1769
- let ( mut err_for_lt, mut err_for_ty, mut err_for_ct) = ( false , false , false ) ;
1770
- for arg in & generic_args. args {
1771
- let ( span, kind) = match arg {
1772
- hir:: GenericArg :: Lifetime ( lt) => {
1773
- if err_for_lt { continue }
1774
- err_for_lt = true ;
1775
- has_err = true ;
1776
- ( lt. span , "lifetime" )
1777
- }
1778
- hir:: GenericArg :: Type ( ty) => {
1779
- if err_for_ty { continue }
1780
- err_for_ty = true ;
1781
- has_err = true ;
1782
- ( ty. span , "type" )
1783
- }
1784
- hir:: GenericArg :: Const ( ct) => {
1785
- if err_for_ct { continue }
1786
- err_for_ct = true ;
1787
- ( ct. span , "const" )
1788
- }
1789
- } ;
1790
- let mut err = struct_span_err ! (
1791
- self . tcx( ) . sess,
1792
- span,
1793
- E0109 ,
1794
- "{} arguments are not allowed for this type" ,
1795
- kind,
1796
- ) ;
1797
- err. span_label ( span, format ! ( "{} argument not allowed" , kind) ) ;
1798
- err. emit ( ) ;
1799
- if err_for_lt && err_for_ty && err_for_ct {
1800
- break ;
1764
+ let ( mut err_for_lt, mut err_for_ty, mut err_for_ct) = ( false , false , false ) ;
1765
+ for arg in & segment. generic_args ( ) . args {
1766
+ let ( span, kind) = match arg {
1767
+ hir:: GenericArg :: Lifetime ( lt) => {
1768
+ if err_for_lt { continue }
1769
+ err_for_lt = true ;
1770
+ has_err = true ;
1771
+ ( lt. span , "lifetime" )
1801
1772
}
1802
- }
1803
- for binding in & generic_args. bindings {
1804
- has_err = true ;
1805
- Self :: prohibit_assoc_ty_binding ( self . tcx ( ) , binding. span ) ;
1773
+ hir:: GenericArg :: Type ( ty) => {
1774
+ if err_for_ty { continue }
1775
+ err_for_ty = true ;
1776
+ has_err = true ;
1777
+ ( ty. span , "type" )
1778
+ }
1779
+ hir:: GenericArg :: Const ( ct) => {
1780
+ if err_for_ct { continue }
1781
+ err_for_ct = true ;
1782
+ ( ct. span , "const" )
1783
+ }
1784
+ } ;
1785
+ let mut err = struct_span_err ! (
1786
+ self . tcx( ) . sess,
1787
+ span,
1788
+ E0109 ,
1789
+ "{} arguments are not allowed for this type" ,
1790
+ kind,
1791
+ ) ;
1792
+ err. span_label ( span, format ! ( "{} argument not allowed" , kind) ) ;
1793
+ err. emit ( ) ;
1794
+ if err_for_lt && err_for_ty && err_for_ct {
1806
1795
break ;
1807
1796
}
1808
- } )
1797
+ }
1798
+ for binding in & segment. generic_args ( ) . bindings {
1799
+ has_err = true ;
1800
+ Self :: prohibit_assoc_ty_binding ( self . tcx ( ) , binding. span ) ;
1801
+ break ;
1802
+ }
1809
1803
}
1810
1804
has_err
1811
1805
}
0 commit comments