diff options
Diffstat (limited to 'syntax/file.rs')
-rw-r--r-- | syntax/file.rs | 37 |
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)), } } |