xso-proc: change field def's span slightly for better UX

This commit is contained in:
Jonas Schäfer 2024-08-05 10:56:28 +02:00
commit 656125a850

View file

@ -427,20 +427,26 @@ impl FieldDef {
index: u32, index: u32,
container_namespace: &NamespaceRef, container_namespace: &NamespaceRef,
) -> Result<Self> { ) -> Result<Self> {
let field_span = field.span();
let meta = XmlFieldMeta::parse_from_attributes(&field.attrs, &field_span)?;
let (member, ident) = match field.ident.as_ref() { let (member, ident) = match field.ident.as_ref() {
Some(v) => (Member::Named(v.clone()), Some(v)), Some(v) => (Member::Named(v.clone()), Some(v)),
None => ( None => (
Member::Unnamed(Index { Member::Unnamed(Index {
index, index,
span: field_span, // We use the type's span here, because `field.span()`
// will visually point at the `#[xml(..)]` meta, which is
// not helpful when glancing at error messages referring
// to the field itself.
span: field.ty.span(),
}), }),
None, None,
), ),
}; };
// This will either be the field's identifier's span (for named
// fields) or the field's type (for unnamed fields), which should give
// the user a good visual feedback about which field an error message
// is.
let field_span = member.span();
let meta = XmlFieldMeta::parse_from_attributes(&field.attrs, &field_span)?;
let ty = field.ty.clone(); let ty = field.ty.clone();
Ok(Self { Ok(Self {