Preserve item inner attrs
diff --git a/syntax/file.rs b/syntax/file.rs
index fd6dd98..99466b8 100644
--- a/syntax/file.rs
+++ b/syntax/file.rs
@@ -91,17 +91,32 @@
let item = input.parse()?;
match item {
- RustItem::Struct(item) => Ok(Item::Struct(ItemStruct { attrs, ..item })),
- RustItem::Enum(item) => Ok(Item::Enum(ItemEnum { attrs, ..item })),
- RustItem::ForeignMod(item) => Ok(Item::ForeignMod(ItemForeignMod {
- attrs,
- unsafety,
- abi: item.abi,
- brace_token: item.brace_token,
- items: item.items,
- })),
- RustItem::Impl(item) => Ok(Item::Impl(ItemImpl { attrs, ..item })),
- RustItem::Use(item) => Ok(Item::Use(ItemUse { attrs, ..item })),
+ RustItem::Struct(mut item) => {
+ item.attrs.splice(..0, attrs);
+ Ok(Item::Struct(item))
+ }
+ RustItem::Enum(mut item) => {
+ item.attrs.splice(..0, attrs);
+ Ok(Item::Enum(item))
+ }
+ RustItem::ForeignMod(mut item) => {
+ item.attrs.splice(..0, attrs);
+ Ok(Item::ForeignMod(ItemForeignMod {
+ attrs: item.attrs,
+ unsafety,
+ abi: item.abi,
+ brace_token: item.brace_token,
+ items: item.items,
+ }))
+ }
+ RustItem::Impl(mut item) => {
+ item.attrs.splice(..0, attrs);
+ Ok(Item::Impl(item))
+ }
+ RustItem::Use(mut item) => {
+ item.attrs.splice(..0, attrs);
+ Ok(Item::Use(item))
+ }
other => Ok(Item::Other(other)),
}
}