Rust: fix ast generator handling renamed enum variants

This commit is contained in:
Paolo Tranquilli
2025-03-27 16:18:33 +01:00
parent 32f6acb985
commit 394f3eb1be
2 changed files with 10 additions and 4 deletions

View File

@@ -432,6 +432,7 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
struct EnumVariantInfo {
name: String,
snake_case_name: String,
variant_ast_name: String,
}
#[derive(Serialize)]
@@ -480,9 +481,14 @@ fn enum_to_extractor_info(node: &AstEnumSrc) -> Option<ExtractorEnumInfo> {
variants: node
.variants
.iter()
.map(|v| EnumVariantInfo {
name: v.clone(),
snake_case_name: to_lower_snake_case(v),
.map(|v| {
let name = class_name(v);
let snake_case_name = to_lower_snake_case(v);
EnumVariantInfo {
name,
snake_case_name,
variant_ast_name: v.clone(),
}
})
.collect(),
})

View File

@@ -25,7 +25,7 @@ impl Translator<'_> {
pub(crate) fn emit_{{snake_case_name}}(&mut self, node: ast::{{ast_name}}) -> Option<Label<generated::{{name}}>> {
match node {
{{#variants}}
ast::{{ast_name}}::{{name}}(inner) => self.emit_{{snake_case_name}}(inner).map(Into::into),
ast::{{ast_name}}::{{variant_ast_name}}(inner) => self.emit_{{snake_case_name}}(inner).map(Into::into),
{{/variants}}
}
}