Skip to content

Commit

Permalink
Auto merge of #46191 - eddyb:better-late-than-never, r=nikomatsakis
Browse files Browse the repository at this point in the history
rustc: don't mark lifetimes as early-bound in the presence of impl Trait.

This hack from the original implementation shouldn't be needed anymore, thanks to @cramertj.

r? @nikomatsakis
  • Loading branch information
bors committed Nov 25, 2017
2 parents cc6b88c + fc658f2 commit 2f47a9e
Showing 1 changed file with 0 additions and 13 deletions.
13 changes: 0 additions & 13 deletions src/librustc/middle/resolve_lifetime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1750,7 +1750,6 @@ fn insert_late_bound_lifetimes(map: &mut NamedRegionMap,

let mut appears_in_output = AllCollector {
regions: FxHashSet(),
impl_trait: false
};
intravisit::walk_fn_ret_ty(&mut appears_in_output, &decl.output);

Expand All @@ -1763,7 +1762,6 @@ fn insert_late_bound_lifetimes(map: &mut NamedRegionMap,
// ignore binders here and scrape up all names we see.
let mut appears_in_where_clause = AllCollector {
regions: FxHashSet(),
impl_trait: false
};
for ty_param in generics.ty_params.iter() {
walk_list!(&mut appears_in_where_clause,
Expand Down Expand Up @@ -1804,9 +1802,6 @@ fn insert_late_bound_lifetimes(map: &mut NamedRegionMap,
// appears in the where clauses? early-bound.
if appears_in_where_clause.regions.contains(&name) { continue; }

// any `impl Trait` in the return type? early-bound.
if appears_in_output.impl_trait { continue; }

// does not appear in the inputs, but appears in the return type? early-bound.
if !constrained_by_input.regions.contains(&name) &&
appears_in_output.regions.contains(&name) {
Expand Down Expand Up @@ -1865,7 +1860,6 @@ fn insert_late_bound_lifetimes(map: &mut NamedRegionMap,

struct AllCollector {
regions: FxHashSet<hir::LifetimeName>,
impl_trait: bool
}

impl<'v> Visitor<'v> for AllCollector {
Expand All @@ -1876,12 +1870,5 @@ fn insert_late_bound_lifetimes(map: &mut NamedRegionMap,
fn visit_lifetime(&mut self, lifetime_ref: &'v hir::Lifetime) {
self.regions.insert(lifetime_ref.name);
}

fn visit_ty(&mut self, ty: &hir::Ty) {
if let hir::TyImplTraitExistential(..) = ty.node {
self.impl_trait = true;
}
intravisit::walk_ty(self, ty);
}
}
}

0 comments on commit 2f47a9e

Please sign in to comment.