Fix codegen tree traversal to be updated for the otherwise field and future proof the traversal function
This commit is contained in:
parent
b5ac5bc949
commit
f695276bf7
|
@ -42,6 +42,7 @@ use indexmap::{IndexMap, IndexSet};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use petgraph::{algo, Graph};
|
use petgraph::{algo, Graph};
|
||||||
use std::{collections::HashMap, rc::Rc};
|
use std::{collections::HashMap, rc::Rc};
|
||||||
|
use tree::Fields;
|
||||||
|
|
||||||
use uplc::{
|
use uplc::{
|
||||||
ast::{Constant as UplcConstant, Name, NamedDeBruijn, Program, Term, Type as UplcType},
|
ast::{Constant as UplcConstant, Name, NamedDeBruijn, Program, Term, Type as UplcType},
|
||||||
|
@ -3116,7 +3117,7 @@ impl<'a> CodeGenerator<'a> {
|
||||||
&mut used_functions,
|
&mut used_functions,
|
||||||
&mut TreePath::new(),
|
&mut TreePath::new(),
|
||||||
0,
|
0,
|
||||||
0,
|
Fields::FirstField,
|
||||||
);
|
);
|
||||||
|
|
||||||
validator_hoistable = used_functions.clone();
|
validator_hoistable = used_functions.clone();
|
||||||
|
@ -3770,7 +3771,7 @@ impl<'a> CodeGenerator<'a> {
|
||||||
current_function_deps,
|
current_function_deps,
|
||||||
&mut function_tree_path,
|
&mut function_tree_path,
|
||||||
depth + 1,
|
depth + 1,
|
||||||
0,
|
Fields::FirstField,
|
||||||
);
|
);
|
||||||
|
|
||||||
for (generic_function_key, variant_name) in current_function_deps.iter() {
|
for (generic_function_key, variant_name) in current_function_deps.iter() {
|
||||||
|
@ -3796,7 +3797,7 @@ impl<'a> CodeGenerator<'a> {
|
||||||
dependency_functions: &mut Vec<(FunctionAccessKey, String)>,
|
dependency_functions: &mut Vec<(FunctionAccessKey, String)>,
|
||||||
path: &mut TreePath,
|
path: &mut TreePath,
|
||||||
current_depth: usize,
|
current_depth: usize,
|
||||||
depth_index: usize,
|
depth_index: Fields,
|
||||||
) {
|
) {
|
||||||
air_tree.traverse_tree_with_path(
|
air_tree.traverse_tree_with_path(
|
||||||
path,
|
path,
|
||||||
|
@ -3946,11 +3947,11 @@ impl<'a> CodeGenerator<'a> {
|
||||||
})
|
})
|
||||||
.collect_vec();
|
.collect_vec();
|
||||||
|
|
||||||
let mut function_air_tree_body = self.build(
|
let mut function_air_tree_body = AirTree::no_op(self.build(
|
||||||
&function_def.body,
|
&function_def.body,
|
||||||
&generic_function_key.module_name,
|
&generic_function_key.module_name,
|
||||||
&[],
|
&[],
|
||||||
);
|
));
|
||||||
|
|
||||||
function_air_tree_body.traverse_tree_with(
|
function_air_tree_body.traverse_tree_with(
|
||||||
&mut |air_tree, _| {
|
&mut |air_tree, _| {
|
||||||
|
@ -3979,8 +3980,11 @@ impl<'a> CodeGenerator<'a> {
|
||||||
.map(|arg| arg.arg_name.get_variable_name().unwrap_or("_").to_string())
|
.map(|arg| arg.arg_name.get_variable_name().unwrap_or("_").to_string())
|
||||||
.collect_vec();
|
.collect_vec();
|
||||||
|
|
||||||
let mut function_air_tree_body =
|
let mut function_air_tree_body = AirTree::no_op(self.build(
|
||||||
self.build(&function_def.body, &generic_function_key.module_name, &[]);
|
&function_def.body,
|
||||||
|
&generic_function_key.module_name,
|
||||||
|
&[],
|
||||||
|
));
|
||||||
|
|
||||||
function_air_tree_body.traverse_tree_with(
|
function_air_tree_body.traverse_tree_with(
|
||||||
&mut |air_tree, _| {
|
&mut |air_tree, _| {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue