fix(codegen): hacky fix for colliding enum names
This commit is contained in:
parent
14e6e81278
commit
40913bc89b
|
@ -429,6 +429,24 @@ impl Enum {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let shared: Vec<_> = result
|
||||||
|
.variants
|
||||||
|
.iter_mut()
|
||||||
|
.filter(|v| v.name == "Variant")
|
||||||
|
.collect();
|
||||||
|
if shared.len() >= 2 {
|
||||||
|
for (idx, variant) in shared.into_iter().enumerate() {
|
||||||
|
let label = idx + 1;
|
||||||
|
variant.name = format!("Variant{}", label);
|
||||||
|
if let EnumVariantValue::Tuple(values) = &mut variant.value {
|
||||||
|
if let [EnumVariantTupleValue::Enum { name, inner, .. }] = values.as_mut_slice()
|
||||||
|
{
|
||||||
|
inner.name.push_str(&label.to_string());
|
||||||
|
name.push_str(&label.to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some(result)
|
Some(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,8 +462,8 @@ impl Enum {
|
||||||
|
|
||||||
pub fn codegen(&self, resolved: &ResolvedSchema) -> Option<TokenStream> {
|
pub fn codegen(&self, resolved: &ResolvedSchema) -> Option<TokenStream> {
|
||||||
let repr = self.repr.map(|r| match r {
|
let repr = self.repr.map(|r| match r {
|
||||||
EnumRepr::U8 => quote! { #[repr(u8)]},
|
EnumRepr::U8 => quote! { #[repr(u8)] },
|
||||||
EnumRepr::U32 => quote! { #[repr(u32)]},
|
EnumRepr::U32 => quote! { #[repr(u32)] },
|
||||||
});
|
});
|
||||||
let name = format_ident!("{}", self.name);
|
let name = format_ident!("{}", self.name);
|
||||||
let desc = self.description.as_ref().map(|d| {
|
let desc = self.description.as_ref().map(|d| {
|
||||||
|
|
Loading…
Reference in a new issue