Fix span placement on shared structs
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 8247d19..f6bdf72 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -84,6 +84,7 @@
 pub struct Struct {
     pub doc: Doc,
     pub derives: Vec<Derive>,
+    pub visibility: Token![pub],
     pub struct_token: Token![struct],
     pub name: Pair,
     pub brace_token: Brace,
diff --git a/syntax/parse.rs b/syntax/parse.rs
index a178421..4bfabcd 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -117,6 +117,12 @@
         });
     }
 
+    let visibility = Token![pub](match item.vis {
+        Visibility::Public(vis) => vis.pub_token.span,
+        Visibility::Crate(vis) => vis.crate_token.span,
+        Visibility::Restricted(vis) => vis.pub_token.span,
+        Visibility::Inherited => item.ident.span(),
+    });
     let struct_token = item.struct_token;
     let name = pair(namespace, &item.ident, cxx_name, rust_name);
     let brace_token = named_fields.brace_token;
@@ -124,6 +130,7 @@
     Ok(Api::Struct(Struct {
         doc,
         derives,
+        visibility,
         struct_token,
         name,
         brace_token,