use super::Parser;
use rustc_errors::PResult;
-use rustc_span::source_map::DUMMY_SP;
use rustc_span::symbol::{kw, sym};
use syntax::ast::{self, Attribute, GenericBounds, GenericParam, GenericParamKind, WhereClause};
use syntax::token;
.span_label(attrs[0].span, "attributes must go before parameters")
.emit();
} else {
- self.struct_span_err(
- attrs[0].span,
- &format!("attribute without generic parameters"),
- )
- .span_label(
- attrs[0].span,
- "attributes are only permitted when preceding parameters",
- )
- .emit();
+ self.struct_span_err(attrs[0].span, "attribute without generic parameters")
+ .span_label(
+ attrs[0].span,
+ "attributes are only permitted when preceding parameters",
+ )
+ .emit();
}
}
break;
};
Ok(ast::Generics {
params,
- where_clause: WhereClause { predicates: Vec::new(), span: DUMMY_SP },
+ where_clause: WhereClause {
+ predicates: Vec::new(),
+ span: self.prev_span.shrink_to_hi(),
+ },
span,
})
}
/// ```
pub(super) fn parse_where_clause(&mut self) -> PResult<'a, WhereClause> {
let mut where_clause =
- WhereClause { predicates: Vec::new(), span: self.prev_span.to(self.prev_span) };
+ WhereClause { predicates: Vec::new(), span: self.prev_span.shrink_to_hi() };
if !self.eat_keyword(kw::Where) {
return Ok(where_clause);