bindgen: works

This commit is contained in:
nym21
2026-03-16 00:28:29 +01:00
parent fdf8661a4b
commit c1565c5f42
11 changed files with 3392 additions and 700 deletions
@@ -701,6 +701,10 @@ pub fn generate_structural_patterns(
}
writeln!(output, " */\n").unwrap();
// Skip factory for non-parameterizable patterns (inlined at tree level)
if !metadata.is_parameterizable(&pattern.name) {
continue;
}
writeln!(output, "/**").unwrap();
writeln!(output, " * Create a {} pattern node", pattern.name).unwrap();
@@ -222,15 +222,12 @@ fn generate_tree_initializer(
} else {
// Use pattern factory
let pattern = metadata.find_pattern(&child.field.rust_type);
if pattern.is_some_and(|p| p.is_templated()) {
// Templated: extract discriminator from field_parts
let disc = child
.base_result
.field_parts
.values()
.filter(|v| !v.is_empty())
.min_by_key(|v| v.len())
.cloned()
if let Some(pat) = pattern
&& pat.is_templated()
{
// Templated: extract discriminator using the pattern's templates
let disc = pat
.extract_disc_from_instance(&child.base_result.field_parts)
.unwrap_or_default();
writeln!(
output,