about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-05-27 20:37:52 +0100
committervarkor <github@varkor.com>2018-06-20 12:21:52 +0100
commit8bccfe7a526bb03fd656a194a03f6850e16bc4c6 (patch)
tree99a08224e07890a26d9202361828b2a77e9ee841
parent3bcb006fd96763b24c34a8cf2abdf081d2e912b1 (diff)
downloadrust-8bccfe7a526bb03fd656a194a03f6850e16bc4c6.tar.gz
rust-8bccfe7a526bb03fd656a194a03f6850e16bc4c6.zip
Refactor counting methods
-rw-r--r--src/librustc/hir/intravisit.rs4
-rw-r--r--src/librustc/hir/lowering.rs8
-rw-r--r--src/librustc/hir/mod.rs2
-rw-r--r--src/librustc/ich/impls_hir.rs4
-rw-r--r--src/librustc/middle/resolve_lifetime.rs17
-rw-r--r--src/librustc_typeck/astconv.rs14
-rw-r--r--src/librustc_typeck/check/method/confirm.rs12
-rw-r--r--src/libsyntax/visit.rs4
8 files changed, 29 insertions, 36 deletions
diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs
index 51ce134544d..0bbd2580807 100644
--- a/src/librustc/hir/intravisit.rs
+++ b/src/librustc/hir/intravisit.rs
@@ -745,8 +745,8 @@ pub fn walk_ty_param_bound<'v, V: Visitor<'v>>(visitor: &mut V, bound: &'v TyPar
 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_deprecated, .. } => {
-            match lifetime_deprecated.name {
+        GenericParamKind::Lifetime { ref bounds, ref lifetime, .. } => {
+            match lifetime.name {
                 LifetimeName::Name(name) => {
                     visitor.visit_name(param.span, name);
                 }
diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs
index 71b0b66b59a..d8e03bea89d 100644
--- a/src/librustc/hir/lowering.rs
+++ b/src/librustc/hir/lowering.rs
@@ -705,7 +705,7 @@ impl<'a> LoweringContext<'a> {
                         name: hir_name,
                         bounds: vec![].into(),
                         in_band: true,
-                        lifetime_deprecated: hir::Lifetime {
+                        lifetime: hir::Lifetime {
                             id: def_node_id,
                             span,
                             name: hir_name,
@@ -1424,7 +1424,7 @@ impl<'a> LoweringContext<'a> {
                             name,
                             bounds: vec![].into(),
                             in_band: false,
-                            lifetime_deprecated: hir::Lifetime {
+                            lifetime: hir::Lifetime {
                                 id: def_node_id,
                                 span: lifetime.span,
                                 name,
@@ -1947,7 +1947,7 @@ impl<'a> LoweringContext<'a> {
                            itctx: ImplTraitContext)
                            -> hir::GenericParam {
         match param.kind {
-            GenericParamKind::Lifetime { ref bounds, ref lifetime, .. } => {
+            GenericParamKind::Lifetime { ref bounds, ref lifetime } => {
                 let was_collecting_in_band = self.is_collecting_in_band_lifetimes;
                 self.is_collecting_in_band_lifetimes = false;
 
@@ -1960,7 +1960,7 @@ impl<'a> LoweringContext<'a> {
                         name: lifetime.name,
                         bounds: bounds.iter().map(|lt| self.lower_lifetime(lt)).collect(),
                         in_band: false,
-                        lifetime_deprecated: lifetime,
+                        lifetime,
                     }
                 };
 
diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs
index bb830a042e3..9c2aa3c7e49 100644
--- a/src/librustc/hir/mod.rs
+++ b/src/librustc/hir/mod.rs
@@ -462,7 +462,7 @@ pub enum GenericParamKind {
         // `fn foo(x: &'a u8) -> &'a u8 { x }`
         in_band: bool,
         // We keep a `Lifetime` around for now just so we can `visit_lifetime`.
-        lifetime_deprecated: Lifetime,
+        lifetime: Lifetime,
     },
     Type {
         name: Name,
diff --git a/src/librustc/ich/impls_hir.rs b/src/librustc/ich/impls_hir.rs
index ea12db8681c..fc0eee230cd 100644
--- a/src/librustc/ich/impls_hir.rs
+++ b/src/librustc/ich/impls_hir.rs
@@ -208,11 +208,11 @@ impl<'a> HashStable<StableHashingContext<'a>> for hir::GenericParamKind {
         mem::discriminant(self).hash_stable(hcx, hasher);
         match self {
             hir::GenericParamKind::Lifetime { name, ref bounds, in_band,
-                                              ref lifetime_deprecated } => {
+                                              ref lifetime } => {
                 name.hash_stable(hcx, hasher);
                 bounds.hash_stable(hcx, hasher);
                 in_band.hash_stable(hcx, hasher);
-                lifetime_deprecated.hash_stable(hcx, hasher);
+                lifetime.hash_stable(hcx, hasher);
             }
             hir::GenericParamKind::Type { name, ref bounds, ref default, synthetic, attrs } => {
                 name.hash_stable(hcx, hasher);
diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs
index 67a5448babf..561e6094c86 100644
--- a/src/librustc/middle/resolve_lifetime.rs
+++ b/src/librustc/middle/resolve_lifetime.rs
@@ -1220,20 +1220,17 @@ fn compute_object_lifetime_defaults(
                         .map(|set| match *set {
                             Set1::Empty => "BaseDefault".to_string(),
                             Set1::One(Region::Static) => "'static".to_string(),
-                            Set1::One(Region::EarlyBound(i, _, _)) => {
-                                let mut j = 0;
-                                generics.params.iter().find(|param| match param.kind {
+                            Set1::One(Region::EarlyBound(mut i, _, _)) => {
+                                generics.params.iter().find_map(|param| match param.kind {
                                         GenericParamKind::Lifetime { .. } => {
-                                            if i == j {
-                                                return true;
+                                            if i == 0 {
+                                                return Some(param.name().to_string());
                                             }
-                                            j += 1;
-                                            false
+                                            i -= 1;
+                                            None
                                         }
-                                        _ => false,
+                                        _ => None,
                                     }).unwrap()
-                                  .name()
-                                  .to_string()
                             }
                             Set1::One(_) => bug!(),
                             Set1::Many => "Ambiguous".to_string(),
diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs
index 32c0dbbea69..9d38865a91b 100644
--- a/src/librustc_typeck/astconv.rs
+++ b/src/librustc_typeck/astconv.rs
@@ -274,15 +274,14 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o {
         let substs = Substs::for_item(tcx, def_id, |param, substs| {
             match param.kind {
                 GenericParamDefKind::Lifetime => {
-                    let i = param.index as usize - own_self;
-                    let mut j = 0;
+                    let mut i = param.index as usize - own_self;
                     for arg in &generic_args.args {
                         match arg {
                             GenericArg::Lifetime(lt) => {
-                                if i == j {
+                                if i == 0 {
                                     return self.ast_region_to_region(lt, Some(param)).into();
                                 }
-                                j += 1;
+                                i -= 1;
                             }
                             _ => {}
                         }
@@ -297,17 +296,16 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o {
                         return ty.into();
                     }
 
-                    let i = i - (lt_accepted + own_self);
+                    let mut i = i - (lt_accepted + own_self);
                     if i < ty_provided {
                         // A provided type parameter.
-                        let mut j = 0;
                         for arg in &generic_args.args {
                             match arg {
                                 GenericArg::Type(ty) => {
-                                    if i == j {
+                                    if i == 0 {
                                         return self.ast_ty_to_ty(ty).into();
                                     }
-                                    j += 1;
+                                    i -= 1;
                                 }
                                 _ => {}
                             }
diff --git a/src/librustc_typeck/check/method/confirm.rs b/src/librustc_typeck/check/method/confirm.rs
index 4cf05a4891b..f6b2ded176c 100644
--- a/src/librustc_typeck/check/method/confirm.rs
+++ b/src/librustc_typeck/check/method/confirm.rs
@@ -325,21 +325,20 @@ impl<'a, 'gcx, 'tcx> ConfirmContext<'a, 'gcx, 'tcx> {
         let provided = &segment.args;
         let own_counts = method_generics.own_counts();
         Substs::for_item(self.tcx, pick.item.def_id, |param, _| {
-            let i = param.index as usize;
+            let mut i = param.index as usize;
             if i < parent_substs.len() {
                 parent_substs[i]
             } else {
                 match param.kind {
                     GenericParamDefKind::Lifetime => {
                         if let Some(lifetime) = provided.as_ref().and_then(|data| {
-                            let mut j = 0;
                             for arg in &data.args {
                                 match arg {
                                     GenericArg::Lifetime(lt) => {
-                                        if i - parent_substs.len() == j {
+                                        if i == parent_substs.len() {
                                             return Some(lt);
                                         }
-                                        j += 1;
+                                        i -= 1;
                                     }
                                     _ => {}
                                 }
@@ -352,14 +351,13 @@ impl<'a, 'gcx, 'tcx> ConfirmContext<'a, 'gcx, 'tcx> {
                     }
                     GenericParamDefKind::Type {..} => {
                         if let Some(ast_ty) = provided.as_ref().and_then(|data| {
-                            let mut j = 0;
                             for arg in &data.args {
                                 match arg {
                                     GenericArg::Type(ty) => {
-                                        if i - parent_substs.len() - own_counts.lifetimes == j {
+                                        if i == parent_substs.len() + own_counts.lifetimes {
                                             return Some(ty);
                                         }
-                                        j += 1;
+                                        i -= 1;
                                     }
                                     _ => {}
                                 }
diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs
index 3a81796bae4..b647dc7923e 100644
--- a/src/libsyntax/visit.rs
+++ b/src/libsyntax/visit.rs
@@ -492,12 +492,12 @@ pub fn walk_ty_param_bound<'a, V: Visitor<'a>>(visitor: &mut V, bound: &'a TyPar
 
 pub fn walk_generic_param<'a, V: Visitor<'a>>(visitor: &mut V, param: &'a GenericParam) {
     match param.kind {
-        GenericParamKind::Lifetime { ref bounds, ref lifetime, .. } => {
+        GenericParamKind::Lifetime { ref bounds, ref lifetime } => {
             visitor.visit_ident(param.ident);
             walk_list!(visitor, visit_lifetime, bounds);
             walk_list!(visitor, visit_attribute, param.attrs.iter());
         }
-        GenericParamKind::Type { ref bounds, ref default, .. } => {
+        GenericParamKind::Type { ref bounds, ref default } => {
             visitor.visit_ident(t.ident);
             walk_list!(visitor, visit_ty_param_bound, bounds);
             walk_list!(visitor, visit_ty, default);