Preserve visibility token's span on struct field
diff --git a/syntax/parse.rs b/syntax/parse.rs
index ab17be4..a178421 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -104,7 +104,17 @@
continue;
}
};
- fields.push(Var { ident, ty });
+ 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(),
+ });
+ fields.push(Var {
+ visibility,
+ ident,
+ ty,
+ });
}
let struct_token = item.struct_token;
@@ -510,7 +520,12 @@
};
let ty = parse_type(&arg.ty)?;
if ident != "self" {
- args.push_value(Var { ident, ty });
+ let visibility = Token);
+ args.push_value(Var {
+ visibility,
+ ident,
+ ty,
+ });
if let Some(comma) = comma {
args.push_punct(*comma);
}
@@ -1076,7 +1091,12 @@
Some(ident) => ident.0.clone(),
None => format_ident!("arg{}", i),
};
- Ok(Var { ident, ty })
+ let visibility = Token);
+ Ok(Var {
+ visibility,
+ ident,
+ ty,
+ })
})
.collect::<Result<_>>()?;