]> git.lizzy.rs Git - rust.git/commitdiff
review comments: unify duplicated code
authorEsteban Küber <esteban@kuber.com.ar>
Thu, 28 Jun 2018 18:06:30 +0000 (11:06 -0700)
committerEsteban Küber <esteban@kuber.com.ar>
Thu, 28 Jun 2018 18:12:45 +0000 (11:12 -0700)
src/librustc/hir/mod.rs
src/librustc/infer/error_reporting/mod.rs

index 5416474721045acbe022baad0abae5e39e060b01..e16b6bd2b10eeddd8d5f206d05e2996403825e6a 100644 (file)
@@ -31,7 +31,7 @@
 use util::nodemap::{NodeMap, FxHashSet};
 use mir::mono::Linkage;
 
-use syntax_pos::{Span, DUMMY_SP};
+use syntax_pos::{Span, DUMMY_SP, symbol::InternedString};
 use syntax::codemap::{self, Spanned};
 use rustc_target::spec::abi::Abi;
 use syntax::ast::{self, CrateSugar, Ident, Name, NodeId, DUMMY_NODE_ID, AsmDialect};
@@ -547,6 +547,15 @@ pub fn own_counts(&self) -> GenericParamCount {
 
         own_counts
     }
+
+    pub fn get_named(&self, name: &InternedString) -> Option<&GenericParam> {
+        for param in &self.params {
+            if *name == param.name.name().as_interned_str() {
+                return Some(param);
+            }
+        }
+        None
+    }
 }
 
 /// Synthetic Type Parameters are converted to an other form during lowering, this allows
index 51422f8f38b9c184516a2756d0b23b06586494de..afc83771fe1c7e4e8ed53476ad1c8ff5ecd6911e 100644 (file)
@@ -223,12 +223,10 @@ fn msg_span_from_early_bound_and_free_regions(
         let (prefix, span) = match *region {
             ty::ReEarlyBound(ref br) => {
                 let mut sp = cm.def_span(self.hir.span(node));
-                if let Some(generics) = self.hir.get_generics(scope) {
-                    for param in &generics.params {
-                        if param.name.name().as_str() == br.name.as_str() {
-                            sp = param.span;
-                        }
-                    }
+                if let Some(param) = self.hir.get_generics(scope).and_then(|generics| {
+                    generics.get_named(&br.name)
+                }) {
+                    sp = param.span;
                 }
                 (format!("the lifetime {} as defined on", br.name), sp)
             }
@@ -236,12 +234,10 @@ fn msg_span_from_early_bound_and_free_regions(
                 bound_region: ty::BoundRegion::BrNamed(_, ref name), ..
             }) => {
                 let mut sp = cm.def_span(self.hir.span(node));
-                if let Some(generics) = self.hir.get_generics(scope) {
-                    for param in &generics.params {
-                        if param.name.name().as_str() == name.as_str() {
-                            sp = param.span;
-                        }
-                    }
+                if let Some(param) = self.hir.get_generics(scope).and_then(|generics| {
+                    generics.get_named(&name)
+                }) {
+                    sp = param.span;
                 }
                 (format!("the lifetime {} as defined on", name), sp)
             }