Give span to angle bracketed generic arguments

This commit is contained in:
Vadim Petrochenkov 2017-07-23 20:50:56 +03:00
parent ce3beb609f
commit 128f565dae
15 changed files with 166 additions and 58 deletions

View file

@ -153,14 +153,10 @@ pub enum PathParameters {
}
impl PathParameters {
pub fn span(&self, fallback: Span) -> Span {
pub fn span(&self) -> Span {
match *self {
AngleBracketed(ref data) => {
data.lifetimes.get(0).map(|x| x.span).or_else(||
data.types.get(0).map(|x| x.span)).or_else(||
data.bindings.get(0).map(|x| x.span)).unwrap_or(fallback)
}
Parenthesized(ref data) => data.span
AngleBracketed(ref data) => data.span,
Parenthesized(ref data) => data.span,
}
}
}
@ -168,6 +164,8 @@ impl PathParameters {
/// A path like `Foo<'a, T>`
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Default)]
pub struct AngleBracketedParameterData {
/// Overall span
pub span: Span,
/// The lifetime parameters for this path segment.
pub lifetimes: Vec<Lifetime>,
/// The type parameters for this path segment, if present.