From 95ce05c586b8d8c97238ca4bedc5b06909bb7090 Mon Sep 17 00:00:00 2001 From: varkor Date: Sat, 16 Jun 2018 11:30:31 +0100 Subject: [PATCH] Simplify some counting --- src/librustc_typeck/astconv.rs | 29 ++++++++++++----------------- src/librustc_typeck/check/mod.rs | 3 +-- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs index d0cd1cf61ff..f3912c3042d 100644 --- a/src/librustc_typeck/astconv.rs +++ b/src/librustc_typeck/astconv.rs @@ -213,14 +213,18 @@ fn create_substs_for_ast_path(&self, // If the type is parameterized by this region, then replace this // region with the current anon region binding (in other words, // whatever & would get replaced with). - let mut lt_provided = 0; - let mut ty_provided = 0; - for arg in &generic_args.args { - match arg { - GenericArg::Lifetime(_) => lt_provided += 1, - GenericArg::Type(_) => ty_provided += 1, - } - } + + // FIXME(varkor): Separating out the parameters is messy. + let lifetimes: Vec<_> = generic_args.args.iter().filter_map(|arg| match arg { + GenericArg::Lifetime(lt) => Some(lt), + _ => None, + }).collect(); + let types: Vec<_> = generic_args.args.iter().filter_map(|arg| match arg { + GenericArg::Type(ty) => Some(ty), + _ => None, + }).collect(); + let lt_provided = lifetimes.len(); + let ty_provided = types.len(); let decl_generics = tcx.generics_of(def_id); let mut lt_accepted = 0; @@ -271,15 +275,6 @@ fn create_substs_for_ast_path(&self, }; let own_self = self_ty.is_some() as usize; - // FIXME(varkor): Separating out the parameters is messy. - let lifetimes: Vec<_> = generic_args.args.iter().filter_map(|arg| match arg { - GenericArg::Lifetime(lt) => Some(lt), - _ => None, - }).collect(); - let types: Vec<_> = generic_args.args.iter().filter_map(|arg| match arg { - GenericArg::Type(ty) => Some(ty), - _ => None, - }).collect(); let substs = Substs::for_item(tcx, def_id, |param, substs| { match param.kind { GenericParamDefKind::Lifetime => { diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 0a16cbeccd1..366420cfcab 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -4742,8 +4742,7 @@ pub fn instantiate_value_path(&self, Def::Fn(def_id) | Def::Const(def_id) | Def::Static(def_id, _) => { - fn_segment = Some((segments.last().unwrap(), - self.tcx.generics_of(def_id))); + fn_segment = Some((segments.last().unwrap(), self.tcx.generics_of(def_id))); } // Case 3. Reference to a method or associated const. -- 2.44.0