summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gen.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gen.rs b/src/gen.rs
index d051e903..80be1eed 100644
--- a/src/gen.rs
+++ b/src/gen.rs
@@ -745,6 +745,16 @@ fn cenum_to_rs(ctx: &mut GenCtx, name: String, kind: IKind, enum_items: &[EnumIt
}));
}
+ // for univariant enums, we add a dummy variant to avoid rust-lang/rust#10292
+ if enum_items.len() == 1 {
+ variants.push(P(respan(ctx.span, ast::Variant_ {
+ name: ctx.ext_cx.ident_of("__DUMMY"),
+ attrs: vec![],
+ data: ast::VariantData::Unit(ast::DUMMY_NODE_ID),
+ disr_expr: None,
+ })));
+ }
+
let enum_repr = InternedString::new(enum_kind_to_rust_type_name(kind));
let repr_arg = ctx.ext_cx.meta_word(ctx.span, enum_repr);