Take advantage of the lifetime refactoring
This commit is contained in:
parent
6015edf9af
commit
831b5c02df
8 changed files with 50 additions and 66 deletions
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 { .. } => {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue