@@ -2,7 +2,7 @@ use crate::syntax::namespace::Namespace;
2
2
use quote:: quote;
3
3
use syn:: parse:: { Error , Parse , ParseStream , Result } ;
4
4
use syn:: {
5
- braced, token, Attribute , Ident , Item as RustItem , ItemEnum , ItemForeignMod , ItemStruct ,
5
+ braced, token, Abi , Attribute , ForeignItem , Ident , Item as RustItem , ItemEnum , ItemStruct ,
6
6
ItemUse , Token , Visibility ,
7
7
} ;
8
8
@@ -25,6 +25,14 @@ pub enum Item {
25
25
Other ( RustItem ) ,
26
26
}
27
27
28
+ pub struct ItemForeignMod {
29
+ pub attrs : Vec < Attribute > ,
30
+ pub unsafety : Option < Token ! [ unsafe ] > ,
31
+ pub abi : Abi ,
32
+ pub brace_token : token:: Brace ,
33
+ pub items : Vec < ForeignItem > ,
34
+ }
35
+
28
36
impl Parse for Module {
29
37
fn parse ( input : ParseStream ) -> Result < Self > {
30
38
let namespace = Namespace :: none ( ) ;
@@ -71,7 +79,13 @@ impl Parse for Item {
71
79
match item {
72
80
RustItem :: Struct ( item) => Ok ( Item :: Struct ( item) ) ,
73
81
RustItem :: Enum ( item) => Ok ( Item :: Enum ( item) ) ,
74
- RustItem :: ForeignMod ( item) => Ok ( Item :: ForeignMod ( item) ) ,
82
+ RustItem :: ForeignMod ( item) => Ok ( Item :: ForeignMod ( ItemForeignMod {
83
+ attrs : item. attrs ,
84
+ unsafety : None ,
85
+ abi : item. abi ,
86
+ brace_token : item. brace_token ,
87
+ items : item. items ,
88
+ } ) ) ,
75
89
RustItem :: Use ( item) => Ok ( Item :: Use ( item) ) ,
76
90
other => Ok ( Item :: Other ( other) ) ,
77
91
}
0 commit comments