Skip to content

Commit 9a9b747

Browse files
committed
review comments: unify duplicated code
1 parent 03bcebb commit 9a9b747

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

src/librustc/hir/mod.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use hir::def_id::{DefId, DefIndex, LocalDefId, CRATE_DEF_INDEX};
3131
use util::nodemap::{NodeMap, FxHashSet};
3232
use mir::mono::Linkage;
3333

34-
use syntax_pos::{Span, DUMMY_SP};
34+
use syntax_pos::{Span, DUMMY_SP, symbol::InternedString};
3535
use syntax::codemap::{self, Spanned};
3636
use rustc_target::spec::abi::Abi;
3737
use syntax::ast::{self, CrateSugar, Ident, Name, NodeId, DUMMY_NODE_ID, AsmDialect};
@@ -547,6 +547,15 @@ impl Generics {
547547

548548
own_counts
549549
}
550+
551+
pub fn get_named(&self, name: &InternedString) -> Option<&GenericParam> {
552+
for param in &self.params {
553+
if *name == param.name.name().as_interned_str() {
554+
return Some(param);
555+
}
556+
}
557+
None
558+
}
550559
}
551560

552561
/// Synthetic Type Parameters are converted to an other form during lowering, this allows

src/librustc/infer/error_reporting/mod.rs

+8-12
Original file line numberDiff line numberDiff line change
@@ -223,25 +223,21 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
223223
let (prefix, span) = match *region {
224224
ty::ReEarlyBound(ref br) => {
225225
let mut sp = cm.def_span(self.hir.span(node));
226-
if let Some(generics) = self.hir.get_generics(scope) {
227-
for param in &generics.params {
228-
if param.name.name().as_str() == br.name.as_str() {
229-
sp = param.span;
230-
}
231-
}
226+
if let Some(param) = self.hir.get_generics(scope).and_then(|generics| {
227+
generics.get_named(&br.name)
228+
}) {
229+
sp = param.span;
232230
}
233231
(format!("the lifetime {} as defined on", br.name), sp)
234232
}
235233
ty::ReFree(ty::FreeRegion {
236234
bound_region: ty::BoundRegion::BrNamed(_, ref name), ..
237235
}) => {
238236
let mut sp = cm.def_span(self.hir.span(node));
239-
if let Some(generics) = self.hir.get_generics(scope) {
240-
for param in &generics.params {
241-
if param.name.name().as_str() == name.as_str() {
242-
sp = param.span;
243-
}
244-
}
237+
if let Some(param) = self.hir.get_generics(scope).and_then(|generics| {
238+
generics.get_named(&name)
239+
}) {
240+
sp = param.span;
245241
}
246242
(format!("the lifetime {} as defined on", name), sp)
247243
}

0 commit comments

Comments
 (0)