fix(codegen): hacky fix for colliding enum names

This commit is contained in:
pyrite 2025-05-28 10:19:05 +02:00
parent 14e6e81278
commit 40913bc89b
Signed by: pyrite
GPG key ID: 7F1BA9170CD35D15

View file

@ -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| {