@@ -690,10 +690,9 @@ impl<'a> LoweringContext<'a> {
690690 TyKind :: ImplicitSelf => {
691691 hir:: TyPath ( hir:: QPath :: Resolved ( None , P ( hir:: Path {
692692 def : self . expect_full_def ( t. id ) ,
693- segments : hir_vec ! [ hir:: PathSegment {
694- name: keywords:: SelfType . name( ) ,
695- parameters: hir:: PathParameters :: none( )
696- } ] ,
693+ segments : hir_vec ! [
694+ hir:: PathSegment :: from_name( keywords:: SelfType . name( ) )
695+ ] ,
697696 span : t. span ,
698697 } ) ) )
699698 }
@@ -914,12 +913,8 @@ impl<'a> LoweringContext<'a> {
914913 segments : segments. map ( |segment| {
915914 self . lower_path_segment ( p. span , segment, param_mode, 0 ,
916915 ParenthesizedGenericArgs :: Err )
917- } ) . chain ( name. map ( |name| {
918- hir:: PathSegment {
919- name,
920- parameters : hir:: PathParameters :: none ( )
921- }
922- } ) ) . collect ( ) ,
916+ } ) . chain ( name. map ( |name| hir:: PathSegment :: from_name ( name) ) )
917+ . collect ( ) ,
923918 span : p. span ,
924919 }
925920 }
@@ -940,7 +935,7 @@ impl<'a> LoweringContext<'a> {
940935 expected_lifetimes : usize ,
941936 parenthesized_generic_args : ParenthesizedGenericArgs )
942937 -> hir:: PathSegment {
943- let mut parameters = if let Some ( ref parameters) = segment. parameters {
938+ let ( mut parameters, infer_types ) = if let Some ( ref parameters) = segment. parameters {
944939 let msg = "parenthesized parameters may only be used with a trait" ;
945940 match * * parameters {
946941 PathParameters :: AngleBracketed ( ref data) => {
@@ -951,12 +946,12 @@ impl<'a> LoweringContext<'a> {
951946 ParenthesizedGenericArgs :: Warn => {
952947 self . sess . buffer_lint ( PARENTHESIZED_PARAMS_IN_TYPES_AND_MODULES ,
953948 CRATE_NODE_ID , data. span , msg. into ( ) ) ;
954- hir:: PathParameters :: none ( )
949+ ( hir:: PathParameters :: none ( ) , true )
955950 }
956951 ParenthesizedGenericArgs :: Err => {
957952 struct_span_err ! ( self . sess, data. span, E0214 , "{}" , msg)
958953 . span_label ( data. span , "only traits may use parentheses" ) . emit ( ) ;
959- hir:: PathParameters :: none ( )
954+ ( hir:: PathParameters :: none ( ) , true )
960955 }
961956 }
962957 }
@@ -970,40 +965,39 @@ impl<'a> LoweringContext<'a> {
970965 } ) . collect ( ) ;
971966 }
972967
973- hir:: PathSegment {
974- name : self . lower_ident ( segment. identifier ) ,
968+ hir:: PathSegment :: new (
969+ self . lower_ident ( segment. identifier ) ,
975970 parameters,
976- }
971+ infer_types
972+ )
977973 }
978974
979975 fn lower_angle_bracketed_parameter_data ( & mut self ,
980976 data : & AngleBracketedParameterData ,
981977 param_mode : ParamMode )
982- -> hir:: PathParameters {
978+ -> ( hir:: PathParameters , bool ) {
983979 let & AngleBracketedParameterData { ref lifetimes, ref types, ref bindings, .. } = data;
984- hir:: PathParameters {
980+ ( hir:: PathParameters {
985981 lifetimes : self . lower_lifetimes ( lifetimes) ,
986982 types : types. iter ( ) . map ( |ty| self . lower_ty ( ty) ) . collect ( ) ,
987- infer_types : types. is_empty ( ) && param_mode == ParamMode :: Optional ,
988983 bindings : bindings. iter ( ) . map ( |b| self . lower_ty_binding ( b) ) . collect ( ) ,
989984 parenthesized : false ,
990- }
985+ } , types . is_empty ( ) && param_mode == ParamMode :: Optional )
991986 }
992987
993988 fn lower_parenthesized_parameter_data ( & mut self ,
994989 data : & ParenthesizedParameterData )
995- -> hir:: PathParameters {
990+ -> ( hir:: PathParameters , bool ) {
996991 let & ParenthesizedParameterData { ref inputs, ref output, span } = data;
997992 let inputs = inputs. iter ( ) . map ( |ty| self . lower_ty ( ty) ) . collect ( ) ;
998993 let mk_tup = |this : & mut Self , tys, span| {
999994 let LoweredNodeId { node_id, hir_id } = this. next_id ( ) ;
1000995 P ( hir:: Ty { node : hir:: TyTup ( tys) , id : node_id, hir_id, span } )
1001996 } ;
1002997
1003- hir:: PathParameters {
998+ ( hir:: PathParameters {
1004999 lifetimes : hir:: HirVec :: new ( ) ,
10051000 types : hir_vec ! [ mk_tup( self , inputs, span) ] ,
1006- infer_types : false ,
10071001 bindings : hir_vec ! [ hir:: TypeBinding {
10081002 id: self . next_id( ) . node_id,
10091003 name: Symbol :: intern( FN_OUTPUT_NAME ) ,
@@ -1012,7 +1006,7 @@ impl<'a> LoweringContext<'a> {
10121006 span: output. as_ref( ) . map_or( span, |ty| ty. span) ,
10131007 } ] ,
10141008 parenthesized : true ,
1015- }
1009+ } , false )
10161010 }
10171011
10181012 fn lower_local ( & mut self , l : & Local ) -> P < hir:: Local > {
0 commit comments