@@ -46,7 +46,7 @@ use hir::HirVec;
46
46
use hir:: map:: { DefKey , DefPathData , Definitions } ;
47
47
use hir:: def_id:: { DefId , DefIndex , DefIndexAddressSpace , CRATE_DEF_INDEX } ;
48
48
use hir:: def:: { Def , PathResolution , PerNS } ;
49
- use hir:: PathParam ;
49
+ use hir:: GenericArg ;
50
50
use lint:: builtin:: { self , PARENTHESIZED_PARAMS_IN_TYPES_AND_MODULES } ;
51
51
use middle:: cstore:: CrateStore ;
52
52
use rustc_data_structures:: indexed_vec:: IndexVec ;
@@ -1038,16 +1038,16 @@ impl<'a> LoweringContext<'a> {
1038
1038
}
1039
1039
}
1040
1040
1041
- fn lower_path_param ( & mut self ,
1041
+ fn lower_generic_arg ( & mut self ,
1042
1042
p : & AngleBracketedParam ,
1043
1043
itctx : ImplTraitContext )
1044
- -> PathParam {
1044
+ -> GenericArg {
1045
1045
match p {
1046
1046
AngleBracketedParam :: Lifetime ( lt) => {
1047
- PathParam :: Lifetime ( self . lower_lifetime ( & lt) )
1047
+ GenericArg :: Lifetime ( self . lower_lifetime ( & lt) )
1048
1048
}
1049
1049
AngleBracketedParam :: Type ( ty) => {
1050
- PathParam :: Type ( self . lower_ty ( & ty, itctx) )
1050
+ GenericArg :: Type ( self . lower_ty ( & ty, itctx) )
1051
1051
}
1052
1052
}
1053
1053
}
@@ -1322,15 +1322,15 @@ impl<'a> LoweringContext<'a> {
1322
1322
hir:: intravisit:: NestedVisitorMap :: None
1323
1323
}
1324
1324
1325
- fn visit_path_parameters ( & mut self , span : Span , parameters : & ' v hir:: PathParameters ) {
1325
+ fn visit_generic_args ( & mut self , span : Span , parameters : & ' v hir:: GenericArgs ) {
1326
1326
// Don't collect elided lifetimes used inside of `Fn()` syntax.
1327
1327
if parameters. parenthesized {
1328
1328
let old_collect_elided_lifetimes = self . collect_elided_lifetimes ;
1329
1329
self . collect_elided_lifetimes = false ;
1330
- hir:: intravisit:: walk_path_parameters ( self , span, parameters) ;
1330
+ hir:: intravisit:: walk_generic_args ( self , span, parameters) ;
1331
1331
self . collect_elided_lifetimes = old_collect_elided_lifetimes;
1332
1332
} else {
1333
- hir:: intravisit:: walk_path_parameters ( self , span, parameters) ;
1333
+ hir:: intravisit:: walk_generic_args ( self , span, parameters) ;
1334
1334
}
1335
1335
}
1336
1336
@@ -1567,7 +1567,7 @@ impl<'a> LoweringContext<'a> {
1567
1567
assert ! ( !def_id. is_local( ) ) ;
1568
1568
let item_generics =
1569
1569
self . cstore . item_generics_cloned_untracked ( def_id, self . sess ) ;
1570
- let n = item_generics. own_counts ( ) . lifetimes ( ) ;
1570
+ let n = item_generics. own_counts ( ) . lifetimes ;
1571
1571
self . type_def_lifetime_params . insert ( def_id, n) ;
1572
1572
n
1573
1573
} ) ;
@@ -1684,13 +1684,14 @@ impl<'a> LoweringContext<'a> {
1684
1684
parenthesized_generic_args : ParenthesizedGenericArgs ,
1685
1685
itctx : ImplTraitContext ,
1686
1686
) -> hir:: PathSegment {
1687
- let ( mut parameters, infer_types) = if let Some ( ref parameters) = segment. parameters {
1687
+ let ( mut generic_args, infer_types) =
1688
+ if let Some ( ref generic_args) = segment. parameters {
1688
1689
let msg = "parenthesized parameters may only be used with a trait" ;
1689
- match * * path_params {
1690
- PathParameters :: AngleBracketed ( ref data) => {
1690
+ match * * generic_args {
1691
+ GenericArgs :: AngleBracketed ( ref data) => {
1691
1692
self . lower_angle_bracketed_parameter_data ( data, param_mode, itctx)
1692
1693
}
1693
- PathParameters :: Parenthesized ( ref data) => match parenthesized_generic_args {
1694
+ GenericArgs :: Parenthesized ( ref data) => match parenthesized_generic_args {
1694
1695
ParenthesizedGenericArgs :: Ok => self . lower_parenthesized_parameter_data ( data) ,
1695
1696
ParenthesizedGenericArgs :: Warn => {
1696
1697
self . sess . buffer_lint (
@@ -1699,30 +1700,30 @@ impl<'a> LoweringContext<'a> {
1699
1700
data. span ,
1700
1701
msg. into ( ) ,
1701
1702
) ;
1702
- ( hir:: PathParameters :: none ( ) , true )
1703
+ ( hir:: GenericArgs :: none ( ) , true )
1703
1704
}
1704
1705
ParenthesizedGenericArgs :: Err => {
1705
1706
struct_span_err ! ( self . sess, data. span, E0214 , "{}" , msg)
1706
1707
. span_label ( data. span , "only traits may use parentheses" )
1707
1708
. emit ( ) ;
1708
- ( hir:: PathParameters :: none ( ) , true )
1709
+ ( hir:: GenericArgs :: none ( ) , true )
1709
1710
}
1710
1711
} ,
1711
1712
}
1712
1713
} else {
1713
1714
self . lower_angle_bracketed_parameter_data ( & Default :: default ( ) , param_mode, itctx)
1714
1715
} ;
1715
1716
1716
- if !parameters . parenthesized && parameters . lifetimes . is_empty ( ) {
1717
- path_params . parameters = ( 0 ..expected_lifetimes) . map ( |_| {
1718
- PathParam :: Lifetime ( self . elided_lifetime ( path_span) )
1719
- } ) . chain ( path_params . parameters . into_iter ( ) ) . collect ( ) ;
1717
+ if !generic_args . parenthesized && generic_args . lifetimes ( ) . count ( ) == 0 {
1718
+ generic_args . parameters = ( 0 ..expected_lifetimes) . map ( |_| {
1719
+ GenericArg :: Lifetime ( self . elided_lifetime ( path_span) )
1720
+ } ) . chain ( generic_args . parameters . into_iter ( ) ) . collect ( ) ;
1720
1721
}
1721
1722
1722
1723
hir:: PathSegment :: new (
1723
- self . lower_ident ( segment. ident ) ,
1724
- path_params ,
1725
- infer_types,
1724
+ self . lower_ident ( segment. identifier ) ,
1725
+ generic_args ,
1726
+ infer_types
1726
1727
)
1727
1728
}
1728
1729
@@ -1731,14 +1732,14 @@ impl<'a> LoweringContext<'a> {
1731
1732
data : & AngleBracketedParameterData ,
1732
1733
param_mode : ParamMode ,
1733
1734
itctx : ImplTraitContext ,
1734
- ) -> ( hir:: PathParameters , bool ) {
1735
+ ) -> ( hir:: GenericArgs , bool ) {
1735
1736
let & AngleBracketedParameterData { ref parameters, ref bindings, .. } = data;
1736
- ( hir:: PathParameters {
1737
- parameters : parameters. iter ( ) . map ( |p| self . lower_path_param ( p, itctx) ) . collect ( ) ,
1737
+ ( hir:: GenericArgs {
1738
+ parameters : parameters. iter ( ) . map ( |p| self . lower_generic_arg ( p, itctx) ) . collect ( ) ,
1738
1739
bindings : bindings. iter ( ) . map ( |b| self . lower_ty_binding ( b, itctx) ) . collect ( ) ,
1739
1740
parenthesized : false ,
1740
1741
} ,
1741
- types. is_empty ( ) && param_mode == ParamMode :: Optional )
1742
+ data . types ( ) . count ( ) == 0 && param_mode == ParamMode :: Optional )
1742
1743
}
1743
1744
1744
1745
fn lower_parenthesized_parameter_data (
@@ -1774,8 +1775,8 @@ impl<'a> LoweringContext<'a> {
1774
1775
} ;
1775
1776
1776
1777
(
1777
- hir:: PathParameters {
1778
- parameters : hir_vec ! [ PathParam :: Type ( mk_tup( this, inputs, span) ) ] ,
1778
+ hir:: GenericArgs {
1779
+ parameters : hir_vec ! [ GenericArg :: Type ( mk_tup( this, inputs, span) ) ] ,
1779
1780
bindings : hir_vec ! [
1780
1781
hir:: TypeBinding {
1781
1782
id: this. next_id( ) . node_id,
0 commit comments