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};
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
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)
}
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)
}