From 40913bc89b3266cb02b0a116f8ba0b4c1247aa8e Mon Sep 17 00:00:00 2001 From: pyrite Date: Wed, 28 May 2025 10:19:05 +0200 Subject: [PATCH] fix(codegen): hacky fix for colliding enum names --- torn-api-codegen/src/model/enum.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/torn-api-codegen/src/model/enum.rs b/torn-api-codegen/src/model/enum.rs index cac4b40..4ba292f 100644 --- a/torn-api-codegen/src/model/enum.rs +++ b/torn-api-codegen/src/model/enum.rs @@ -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) } @@ -444,8 +462,8 @@ impl Enum { pub fn codegen(&self, resolved: &ResolvedSchema) -> Option { let repr = self.repr.map(|r| match r { - EnumRepr::U8 => quote! { #[repr(u8)]}, - EnumRepr::U32 => quote! { #[repr(u32)]}, + EnumRepr::U8 => quote! { #[repr(u8)] }, + EnumRepr::U32 => quote! { #[repr(u32)] }, }); let name = format_ident!("{}", self.name); let desc = self.description.as_ref().map(|d| {