@@ -191,15 +191,13 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
191191 item_segment : & hir:: PathSegment )
192192 -> SubstsRef < ' tcx >
193193 {
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+ ) ;
203201
204202 assoc_bindings. first ( ) . map ( |b| Self :: prohibit_assoc_ty_binding ( self . tcx ( ) , b. span ) ) ;
205203
@@ -874,8 +872,8 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
874872 let trait_def = self . tcx ( ) . trait_def ( trait_def_id) ;
875873
876874 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+ {
879877 // For now, require that parenthetical notation be used only with `Fn()` etc.
880878 let msg = if trait_def. paren_sugar {
881879 "the precise format of `Fn`-family traits' type parameters is subject to change. \
@@ -887,13 +885,11 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
887885 span, GateIssue :: Language , msg) ;
888886 }
889887
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) )
897893 }
898894
899895 fn trait_defines_associated_type_named ( & self ,
@@ -1765,47 +1761,45 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
17651761 & self , segments : T ) -> bool {
17661762 let mut has_err = false ;
17671763 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" )
18011772 }
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 {
18061795 break ;
18071796 }
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+ }
18091803 }
18101804 has_err
18111805 }
0 commit comments