]> git.lizzy.rs Git - rust.git/commitdiff
Refactor counting methods
authorvarkor <github@varkor.com>
Sun, 27 May 2018 19:37:52 +0000 (20:37 +0100)
committervarkor <github@varkor.com>
Wed, 20 Jun 2018 11:21:52 +0000 (12:21 +0100)
src/librustc/hir/intravisit.rs
src/librustc/hir/lowering.rs
src/librustc/hir/mod.rs
src/librustc/ich/impls_hir.rs
src/librustc/middle/resolve_lifetime.rs
src/librustc_typeck/astconv.rs
src/librustc_typeck/check/method/confirm.rs
src/libsyntax/visit.rs

index 51ce134544d0885cbd4f4f2c609b4bfce1c1cda1..0bbd25808071443e0fc2aa551ef27f6fe6bff928 100644 (file)
@@ -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);
                 }
index 71b0b66b59a29c176984ed911bac7bd5401fdda4..d8e03bea89df450cf264a2debb756f4ee71880d6 100644 (file)
@@ -705,7 +705,7 @@ fn collect_in_band_defs<T, F>(
                         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 @@ fn visit_lifetime(&mut self, lifetime: &'v hir::Lifetime) {
                             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 @@ fn lower_generic_param(&mut self,
                            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 @@ fn lower_generic_param(&mut self,
                         name: lifetime.name,
                         bounds: bounds.iter().map(|lt| self.lower_lifetime(lt)).collect(),
                         in_band: false,
-                        lifetime_deprecated: lifetime,
+                        lifetime,
                     }
                 };
 
index bb830a042e3917a5707371cc3d370748abccf4ea..9c2aa3c7e497257ef065d6dc2aa41a9924555e63 100644 (file)
@@ -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,
index ea12db8681c716ee37bf59636d7934ef983a1173..fc0eee230cd0db4617f907d0bb4efe4fad485f4e 100644 (file)
@@ -208,11 +208,11 @@ fn hash_stable<W: StableHasherResult>(&self,
         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);
index 67a5448babf835697275fcd8a4cf5f67c7ebd486..561e6094c86a479ff6a868cb39f45f08b3b50082 100644 (file)
@@ -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(),
index 32c0dbbea69354a35efc7a1b234e83d5ce3d46e6..9d38865a91bc8f2667810e45bdc53dca9ebf10b8 100644 (file)
@@ -274,15 +274,14 @@ fn create_substs_for_ast_path(&self,
         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 @@ fn create_substs_for_ast_path(&self,
                         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;
                                 }
                                 _ => {}
                             }
index 4cf05a4891b397df2748484428677953128182af..f6b2ded176c47ec1eead8811e8d90c10b84bd7fd 100644 (file)
@@ -325,21 +325,20 @@ fn instantiate_method_substs(
         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 @@ fn instantiate_method_substs(
                     }
                     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;
                                     }
                                     _ => {}
                                 }
index 3a81796bae4a3f85d6afefe6539b4af877bae736..b647dc7923efd8fed586fb45d422c3b40bcf365a 100644 (file)
@@ -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);