Take advantage of the lifetime refactoring

This commit is contained in:
varkor 2018-05-31 15:52:17 +01:00
parent 6015edf9af
commit 831b5c02df
8 changed files with 50 additions and 66 deletions

View file

@ -743,20 +743,19 @@ pub fn walk_param_bound<'v, V: Visitor<'v>>(visitor: &mut V, bound: &'v ParamBou
pub fn walk_generic_param<'v, V: Visitor<'v>>(visitor: &mut V, param: &'v GenericParam) {
visitor.visit_id(param.id);
match param.kind {
GenericParamKind::Lifetime { ref bounds, ref lifetime, .. } => {
match lifetime.name {
GenericParamKind::Lifetime { ref lt_name, .. } => {
match lt_name {
LifetimeName::Name(name) => {
visitor.visit_name(param.span, name);
visitor.visit_name(param.span, *name);
}
LifetimeName::Fresh(_) |
LifetimeName::Static |
LifetimeName::Implicit |
LifetimeName::Underscore => {}
}
walk_list!(visitor, visit_lifetime, bounds);
}
GenericParamKind::Type { name, ref bounds, ref default, ref attrs, .. } => {
visitor.visit_name(param.span, name);
GenericParamKind::Type { ref default, ref attrs, .. } => {
visitor.visit_name(param.span, param.name);
walk_list!(visitor, visit_ty, default);
walk_list!(visitor, visit_attribute, attrs.iter());
}

View file

@ -1747,8 +1747,8 @@ impl<'a> LoweringContext<'a> {
fn lower_parenthesized_parameter_data(
&mut self,
data: &ParenthesizedParameterData,
) -> (hir::PathParameters, bool) {
data: &ParenthesizedArgData,
) -> (hir::GenericArgs, bool) {
// Switch to `PassThrough` mode for anonymous lifetimes: this
// means that we permit things like `&Ref<T>`, where `Ref` has
// a hidden lifetime parameter. This is needed for backwards
@ -1758,7 +1758,7 @@ impl<'a> LoweringContext<'a> {
AnonymousLifetimeMode::PassThrough,
|this| {
const DISALLOWED: ImplTraitContext = ImplTraitContext::Disallowed;
let &ParenthesizedParameterData { ref inputs, ref output, span } = data;
let &ParenthesizedArgData { ref inputs, ref output, span } = data;
let inputs = inputs.iter().map(|ty| this.lower_ty(ty, DISALLOWED)).collect();
let mk_tup = |this: &mut Self, tys, span| {
let LoweredNodeId { node_id, hir_id } = this.next_id();
@ -1767,7 +1767,7 @@ impl<'a> LoweringContext<'a> {
(
hir::GenericArgs {
parameters: hir_vec![GenericArg::Type(mk_tup(this, inputs, span))],
args: hir_vec![GenericArg::Type(mk_tup(this, inputs, span))],
bindings: hir_vec![
hir::TypeBinding {
id: this.next_id().node_id,

View file

@ -347,14 +347,7 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
}
fn visit_generic_param(&mut self, param: &'hir GenericParam) {
match param.kind {
GenericParamKind::Lifetime { ref lifetime_deprecated, .. } => {
self.insert(param.id, NodeLifetime(lifetime_deprecated));
}
GenericParamKind::Type { .. } => {
self.insert(param.id, NodeGenericParam(param));
}
}
self.insert(param.id, NodeGenericParam(param));
intravisit::walk_generic_param(self, param);
}

View file

@ -110,8 +110,8 @@ impl Region {
let depth = ty::INNERMOST;
let (name, def_id, origin) = new_region(hir_map, param);
debug!(
"Region::late: def={:?} depth={:?} def_id={:?} origin={:?}",
def,
"Region::late: param={:?} depth={:?} def_id={:?} origin={:?}",
param,
depth,
def_id,
origin,
@ -2243,8 +2243,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
for (i, (lifetime_i, lifetime_i_name)) in lifetimes.iter().enumerate() {
match lifetime_i_name {
hir::LifetimeName::Static | hir::LifetimeName::Underscore => {
let lifetime = lifetime_i.lifetime;
let name = lifetime_i.name();
let name = lifetime_i.name;
let mut err = struct_span_err!(
self.tcx.sess,
lifetime_i.span,
@ -2518,10 +2517,10 @@ fn insert_late_bound_lifetimes(
for param in &generics.params {
match param.kind {
hir::GenericParamKind::Lifetime { .. } => {
hir::GenericParamKind::Lifetime { lt_name, .. } => {
if !param.bounds.is_empty() {
// `'a: 'b` means both `'a` and `'b` are referenced
appears_in_where_clause.regions.insert(lifetime_def.lifetime.name);
appears_in_where_clause.regions.insert(lt_name);
}
}
hir::GenericParamKind::Type { .. } => {}