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 { struct EnumVariantInfo {
name: String, name: String,
snake_case_name: String, snake_case_name: String,
variant_ast_name: String,
} }
#[derive(Serialize)] #[derive(Serialize)]
@@ -480,9 +481,14 @@ fn enum_to_extractor_info(node: &AstEnumSrc) -> Option<ExtractorEnumInfo> {
variants: node variants: node
.variants .variants
.iter() .iter()
.map(|v| EnumVariantInfo { .map(|v| {
name: v.clone(), let name = class_name(v);
snake_case_name: to_lower_snake_case(v), let snake_case_name = to_lower_snake_case(v);
EnumVariantInfo {
name,
snake_case_name,
variant_ast_name: v.clone(),
}
}) })
.collect(), .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}}>> { pub(crate) fn emit_{{snake_case_name}}(&mut self, node: ast::{{ast_name}}) -> Option<Label<generated::{{name}}>> {
match node { match node {
{{#variants}} {{#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}} {{/variants}}
} }
} }