@@ -164,33 +164,35 @@ impl EnumVariant {
164164 let body = match variant. fields {
165165 syn:: Fields :: Unit => VariantBody :: Empty ( annotations) ,
166166 syn:: Fields :: Named ( ref fields) => {
167- let path = Path :: new ( format ! ( "{}_Body" , variant. ident) ) ;
167+ let path = Path :: new ( format ! ( "{}_{} _Body" , self_path . name ( ) , variant. ident) ) ;
168168 let name = body_rule
169169 . apply (
170170 & variant. ident . unraw ( ) . to_string ( ) ,
171171 IdentifierType :: StructMember ,
172172 )
173173 . into_owned ( ) ;
174+ let mut body = Struct :: new (
175+ path,
176+ generic_params,
177+ parse_fields ( inline_tag_field, & fields. named , self_path, None ) ?,
178+ inline_tag_field,
179+ true ,
180+ None ,
181+ false ,
182+ None ,
183+ annotations,
184+ Documentation :: none ( ) ,
185+ ) ;
186+ body. export_name = format ! ( "{}_Body" , variant. ident) ;
174187 VariantBody :: Body {
175- body : Struct :: new (
176- path,
177- generic_params,
178- parse_fields ( inline_tag_field, & fields. named , self_path, None ) ?,
179- inline_tag_field,
180- true ,
181- None ,
182- false ,
183- None ,
184- annotations,
185- Documentation :: none ( ) ,
186- ) ,
188+ body,
187189 name,
188190 inline : false ,
189191 inline_casts : false ,
190192 }
191193 }
192194 syn:: Fields :: Unnamed ( ref fields) => {
193- let path = Path :: new ( format ! ( "{}_Body" , variant. ident) ) ;
195+ let path = Path :: new ( format ! ( "{}_{} _Body" , self_path . name ( ) , variant. ident) ) ;
194196 let name = body_rule
195197 . apply (
196198 & variant. ident . unraw ( ) . to_string ( ) ,
@@ -205,19 +207,21 @@ impl EnumVariant {
205207 // As a result we don't currently inline variant definitions in C++ mode at all.
206208 let inline = inline_casts && config. language != Language :: Cxx ;
207209 let inline_name = if inline { Some ( & * name) } else { None } ;
210+ let mut body = Struct :: new (
211+ path,
212+ generic_params,
213+ parse_fields ( inline_tag_field, & fields. unnamed , self_path, inline_name) ?,
214+ inline_tag_field,
215+ true ,
216+ None ,
217+ false ,
218+ None ,
219+ annotations,
220+ Documentation :: none ( ) ,
221+ ) ;
222+ body. export_name = format ! ( "{}_Body" , variant. ident) ;
208223 VariantBody :: Body {
209- body : Struct :: new (
210- path,
211- generic_params,
212- parse_fields ( inline_tag_field, & fields. unnamed , self_path, inline_name) ?,
213- inline_tag_field,
214- true ,
215- None ,
216- false ,
217- None ,
218- annotations,
219- Documentation :: none ( ) ,
220- ) ,
224+ body,
221225 name,
222226 inline,
223227 inline_casts,
0 commit comments