Fix span placement on type aliases
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 77e7e64..12904c3 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -123,6 +123,7 @@
pub doc: Doc,
pub derives: Vec<Derive>,
pub attrs: OtherAttrs,
+ pub visibility: Token![pub],
pub type_token: Token![type],
pub name: Pair,
pub generics: Lifetimes,
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 0fbdda2..17c216d 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -688,7 +688,7 @@
if lookahead.peek(Token![=]) {
// type Alias = crate::path::to::Type;
parse_type_alias(
- cx, attrs, type_token, ident, lifetimes, input, lang, namespace,
+ cx, attrs, visibility, type_token, ident, lifetimes, input, lang, namespace,
)
} else if lookahead.peek(Token![:]) || lookahead.peek(Token![;]) {
// type Opaque: Bound2 + Bound2;
@@ -706,6 +706,7 @@
fn parse_type_alias(
cx: &mut Errors,
attrs: Vec<Attribute>,
+ visibility: Visibility,
type_token: Token![type],
ident: Ident,
generics: Lifetimes,
@@ -741,12 +742,19 @@
return Err(Error::new_spanned(span, msg));
}
+ let visibility = Token => vis.pub_token.span,
+ Visibility::Crate(vis) => vis.crate_token.span,
+ Visibility::Restricted(vis) => vis.pub_token.span,
+ Visibility::Inherited => ident.span(),
+ });
let name = pair(namespace, &ident, cxx_name, rust_name);
Ok(Api::TypeAlias(TypeAlias {
doc,
derives,
attrs,
+ visibility,
type_token,
name,
generics,