use std::cmp::max;
+use rustc_ast::{ast, ptr};
use rustc_span::{source_map, Span};
-use syntax::{ast, ptr};
use crate::macros::MacroArg;
use crate::utils::{mk_sp, outer_attributes};
// Implement `Spanned` for structs with `attrs` field.
implement_spanned!(ast::AssocItem);
implement_spanned!(ast::Expr);
-implement_spanned!(ast::Field);
+implement_spanned!(ast::ExprField);
implement_spanned!(ast::ForeignItem);
implement_spanned!(ast::Item);
implement_spanned!(ast::Local);
ast::StmtKind::Expr(ref expr) | ast::StmtKind::Semi(ref expr) => {
mk_sp(expr.span().lo(), self.span.hi())
}
- ast::StmtKind::Mac(ref mac) => {
- let (_, _, ref attrs) = **mac;
- if attrs.is_empty() {
+ ast::StmtKind::MacCall(ref mac_stmt) => {
+ if mac_stmt.attrs.is_empty() {
self.span
} else {
- mk_sp(attrs[0].span.lo(), self.span.hi())
+ mk_sp(mac_stmt.attrs[0].span.lo(), self.span.hi())
}
}
+ ast::StmtKind::Empty => self.span,
}
}
}
impl Spanned for ast::Param {
fn span(&self) -> Span {
if crate::items::is_named_param(self) {
- mk_sp(self.pat.span.lo(), self.ty.span.hi())
+ mk_sp(crate::items::span_lo_for_param(self), self.ty.span.hi())
} else {
self.ty.span
}
impl Spanned for ast::GenericParam {
fn span(&self) -> Span {
- let lo = if self.attrs.is_empty() {
- self.ident.span.lo()
- } else {
- self.attrs[0].span.lo()
+ let lo = match self.kind {
+ _ if !self.attrs.is_empty() => self.attrs[0].span.lo(),
+ ast::GenericParamKind::Const { kw_span, .. } => kw_span.lo(),
+ _ => self.ident.span.lo(),
};
let hi = if self.bounds.is_empty() {
self.ident.span.hi()
};
let ty_hi = if let ast::GenericParamKind::Type {
default: Some(ref ty),
- } = self.kind
+ }
+ | ast::GenericParamKind::Const { ref ty, .. } = self.kind
{
ty.span().hi()
} else {
}
}
-impl Spanned for ast::StructField {
+impl Spanned for ast::FieldDef {
fn span(&self) -> Span {
span_with_attrs_lo_hi!(self, self.span.lo(), self.ty.span.hi())
}
}
}
-impl Spanned for ast::FunctionRetTy {
+impl Spanned for ast::FnRetTy {
fn span(&self) -> Span {
match *self {
- ast::FunctionRetTy::Default(span) => span,
- ast::FunctionRetTy::Ty(ref ty) => ty.span,
+ ast::FnRetTy::Default(span) => span,
+ ast::FnRetTy::Ty(ref ty) => ty.span,
}
}
}