use crate::core::ir::EnumDef;
use crate::e2e::field_access::VariantAccessorMap;
pub(super) fn build_variant_accessor_map(enums: &[EnumDef]) -> VariantAccessorMap {
let mut map = VariantAccessorMap::default();
for enum_def in enums {
for (accessor_pascal, _payload_type) in
crate::backends::csharp::gen_bindings::variant_accessor_properties(enum_def)
{
let variant = enum_def
.variants
.iter()
.find(|variant| crate::codegen::naming::to_csharp_name(&variant.name) == accessor_pascal)
.map(|variant| variant.name.clone());
let Some(variant) = variant else {
continue;
};
map.narrowing
.insert((enum_def.name.clone(), variant), format!("As{accessor_pascal}"));
}
}
map
}
#[cfg(test)]
#[path = "variant_accessors/tests.rs"]
mod tests;