review comments: unify duplicated code

This commit is contained in:
Esteban Küber 2018-06-28 11:06:30 -07:00
parent 03bcebbc60
commit 9a9b747371
2 changed files with 18 additions and 13 deletions

View File

@ -31,7 +31,7 @@ use hir::def_id::{DefId, DefIndex, LocalDefId, CRATE_DEF_INDEX};
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 @@ impl Generics {
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

View File

@ -223,12 +223,10 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
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 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
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)
}