Represent the unsafety on foreign module
diff --git a/syntax/file.rs b/syntax/file.rs
index f227900..dfe8e0d 100644
--- a/syntax/file.rs
+++ b/syntax/file.rs
@@ -2,7 +2,7 @@
use quote::quote;
use syn::parse::{Error, Parse, ParseStream, Result};
use syn::{
- braced, token, Attribute, Ident, Item as RustItem, ItemEnum, ItemForeignMod, ItemStruct,
+ braced, token, Abi, Attribute, ForeignItem, Ident, Item as RustItem, ItemEnum, ItemStruct,
ItemUse, Token, Visibility,
};
@@ -25,6 +25,14 @@
Other(RustItem),
}
+pub struct ItemForeignMod {
+ pub attrs: Vec<Attribute>,
+ pub unsafety: Option<Token![unsafe]>,
+ pub abi: Abi,
+ pub brace_token: token::Brace,
+ pub items: Vec<ForeignItem>,
+}
+
impl Parse for Module {
fn parse(input: ParseStream) -> Result<Self> {
let namespace = Namespace::none();
@@ -71,7 +79,13 @@
match item {
RustItem::Struct(item) => Ok(Item::Struct(item)),
RustItem::Enum(item) => Ok(Item::Enum(item)),
- RustItem::ForeignMod(item) => Ok(Item::ForeignMod(item)),
+ RustItem::ForeignMod(item) => Ok(Item::ForeignMod(ItemForeignMod {
+ attrs: item.attrs,
+ unsafety: None,
+ abi: item.abi,
+ brace_token: item.brace_token,
+ items: item.items,
+ })),
RustItem::Use(item) => Ok(Item::Use(item)),
other => Ok(Item::Other(other)),
}