fill constants to data so now test 006 passes

This commit is contained in:
Kasey White 2022-12-13 14:43:08 -05:00 committed by KtorZ
parent dc5ae296db
commit 8393d8555c
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
1 changed files with 27 additions and 3 deletions

View File

@ -10,7 +10,7 @@ use uplc::{
builtins::DefaultFunction, builtins::DefaultFunction,
machine::runtime::convert_constr_to_tag, machine::runtime::convert_constr_to_tag,
parser::interner::Interner, parser::interner::Interner,
BigInt, Constr, PlutusData, BigInt, Constr, KeyValuePairs, PlutusData,
}; };
use crate::{ use crate::{
@ -4155,8 +4155,32 @@ fn convert_constants_to_data(constants: Vec<UplcConstant>) -> Vec<UplcConstant>
any_constructor: None, any_constructor: None,
fields: vec![], fields: vec![],
})), })),
UplcConstant::ProtoList(_, _) => todo!(), UplcConstant::ProtoList(_, constants) => {
UplcConstant::ProtoPair(_, _, _, _) => todo!(), let inner_constants = convert_constants_to_data(constants)
.into_iter()
.map(|constant| match constant {
UplcConstant::Data(d) => d,
_ => todo!(),
})
.collect_vec();
UplcConstant::Data(PlutusData::Array(inner_constants))
}
UplcConstant::ProtoPair(_, _, left, right) => {
let inner_constants = vec![*left, *right];
let inner_constants = convert_constants_to_data(inner_constants)
.into_iter()
.map(|constant| match constant {
UplcConstant::Data(d) => d,
_ => todo!(),
})
.collect_vec();
UplcConstant::Data(PlutusData::Map(KeyValuePairs::Def(vec![(
inner_constants[0].clone(),
inner_constants[1].clone(),
)])))
}
d @ UplcConstant::Data(_) => d, d @ UplcConstant::Data(_) => d,
_ => unreachable!(), _ => unreachable!(),
}; };