]> git.lizzy.rs Git - rust.git/commitdiff
fix depth for structs
authorgaurikholkar <f2013002@goa.bits-pilani.ac.in>
Thu, 14 Sep 2017 04:31:12 +0000 (10:01 +0530)
committergaurikholkar <f2013002@goa.bits-pilani.ac.in>
Thu, 14 Sep 2017 04:31:12 +0000 (10:01 +0530)
src/librustc/infer/error_reporting/different_lifetimes.rs

index bf1428cabd63c0b7c8ea806312186efa74f294dc..536715ffadb15b7f7501ac78af5cd39c6791e413 100644 (file)
@@ -287,6 +287,7 @@ fn visit_ty(&mut self, arg: &'gcx hir::Ty) {
                                           found_it: false,
                                           bound_region: self.bound_region,
                                           hir_map: self.hir_map,
+                                          depth: self.depth,
                                       };
                 intravisit::walk_ty(subvisitor, arg); // call walk_ty; as visit_ty is empty,
                 // this will visit only outermost type
@@ -313,6 +314,7 @@ struct TyPathVisitor<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> {
     hir_map: &'a hir::map::Map<'gcx>,
     found_it: bool,
     bound_region: ty::BoundRegion,
+    depth: u32,
 }
 
 impl<'a, 'gcx, 'tcx> Visitor<'gcx> for TyPathVisitor<'a, 'gcx, 'tcx> {
@@ -326,7 +328,7 @@ fn visit_lifetime(&mut self, lifetime: &hir::Lifetime) {
         match (self.infcx.tcx.named_region(hir_id), self.bound_region) {
             // the lifetime of the TyPath!
             (Some(rl::Region::LateBoundAnon(debruijn_index, anon_index)), ty::BrAnon(br_index)) => {
-                if debruijn_index.depth == 1 && anon_index == br_index {
+                if debruijn_index.depth == self.depth && anon_index == br_index {
                     self.found_it = true;
                     return;
                 }
@@ -349,7 +351,8 @@ fn visit_lifetime(&mut self, lifetime: &hir::Lifetime) {
                 debug!("self.infcx.tcx.hir.local_def_id(id)={:?}",
                        self.infcx.tcx.hir.local_def_id(id));
                 debug!("def_id={:?}", def_id);
-                if debruijn_index.depth == 1 && self.infcx.tcx.hir.local_def_id(id) == def_id {
+                if debruijn_index.depth == self.depth &&
+                   self.infcx.tcx.hir.local_def_id(id) == def_id {
                     self.found_it = true;
                     return; // we can stop visiting now
                 }