aboutsummaryrefslogtreecommitdiff
path: root/syntax/file.rs
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/file.rs')
-rw-r--r--syntax/file.rs37
1 files changed, 26 insertions, 11 deletions
diff --git a/syntax/file.rs b/syntax/file.rs
index fd6dd98b..99466b8e 100644
--- a/syntax/file.rs
+++ b/syntax/file.rs
@@ -91,17 +91,32 @@ impl Parse for Item {
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)),
}
}