fix: zero arg functions were grabbing extra dependencies they didn't need to
fix: Had the wrong conversion for constant maps to plutus data. Fixed to check for right conversion
This commit is contained in:
parent
cf6d04e95b
commit
bfd2a50a6b
|
@ -962,7 +962,29 @@ pub fn convert_constants_to_data(constants: Vec<Rc<UplcConstant>>) -> Vec<UplcCo
|
|||
.map_or(Some((*b).into()), |_| None),
|
||||
fields: vec![],
|
||||
})),
|
||||
UplcConstant::ProtoList(_, constants) => {
|
||||
UplcConstant::ProtoList(list_type, constants) => {
|
||||
if matches!(list_type, UplcType::Pair(_, _)) {
|
||||
let inner_constants = constants
|
||||
.iter()
|
||||
.cloned()
|
||||
.map(|pair| match pair {
|
||||
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();
|
||||
(inner_constants[0].clone(), inner_constants[1].clone())
|
||||
}
|
||||
_ => unreachable!(),
|
||||
})
|
||||
.collect_vec();
|
||||
|
||||
UplcConstant::Data(PlutusData::Map(KeyValuePairs::Def(inner_constants)))
|
||||
} else {
|
||||
let inner_constants =
|
||||
convert_constants_to_data(constants.iter().cloned().map(Rc::new).collect())
|
||||
.into_iter()
|
||||
|
@ -974,6 +996,7 @@ pub fn convert_constants_to_data(constants: Vec<Rc<UplcConstant>>) -> Vec<UplcCo
|
|||
|
||||
UplcConstant::Data(PlutusData::Array(inner_constants))
|
||||
}
|
||||
}
|
||||
UplcConstant::ProtoPair(_, _, left, right) => {
|
||||
let inner_constants = vec![left.clone(), right.clone()];
|
||||
let inner_constants = convert_constants_to_data(inner_constants)
|
||||
|
@ -984,10 +1007,10 @@ pub fn convert_constants_to_data(constants: Vec<Rc<UplcConstant>>) -> Vec<UplcCo
|
|||
})
|
||||
.collect_vec();
|
||||
|
||||
UplcConstant::Data(PlutusData::Map(KeyValuePairs::Def(vec![(
|
||||
UplcConstant::Data(PlutusData::Array(vec![
|
||||
inner_constants[0].clone(),
|
||||
inner_constants[1].clone(),
|
||||
)])))
|
||||
]))
|
||||
}
|
||||
d @ UplcConstant::Data(_) => d.clone(),
|
||||
UplcConstant::Unit => UplcConstant::Data(PlutusData::Constr(Constr {
|
||||
|
@ -1540,7 +1563,7 @@ pub fn handle_func_dependencies(
|
|||
.unwrap_or_else(|| unreachable!());
|
||||
|
||||
if (dep_scope.common_ancestor(func_scope) == *func_scope && !depend_comp.args.is_empty())
|
||||
|| function_component.args.is_empty()
|
||||
|| (function_component.args.is_empty() && !depend_comp.args.is_empty())
|
||||
{
|
||||
let mut recursion_ir = vec![];
|
||||
handle_recursion_ir(&dependency, depend_comp, &mut recursion_ir);
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
# This file was generated by Aiken
|
||||
# You typically do not need to edit this file
|
||||
|
||||
[[requirements]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
source = "github"
|
||||
|
||||
[[packages]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
requirements = []
|
||||
source = "github"
|
|
@ -0,0 +1,8 @@
|
|||
name = "aiken-lang/acceptance_test_082"
|
||||
version = "0.0.0"
|
||||
description = ""
|
||||
|
||||
[[dependencies]]
|
||||
name = 'aiken-lang/stdlib'
|
||||
version = 'main'
|
||||
source = 'github'
|
|
@ -0,0 +1,29 @@
|
|||
use aiken/list
|
||||
use aiken/transaction/value.{Value}
|
||||
|
||||
test foldl_value_test1() {
|
||||
let val1 = value.from_lovelace(1000000)
|
||||
let val2 = value.from_lovelace(2000000)
|
||||
let foo =
|
||||
fn(i: Value, acc: (Value, Int)) {
|
||||
let (v, int) = acc
|
||||
(value.add(i, v), int + 1)
|
||||
}
|
||||
list.foldl([val1, val2], foo, (value.zero(), 0)) == (
|
||||
value.from_lovelace(3000000),
|
||||
2,
|
||||
)
|
||||
}
|
||||
// test foldl_value_test2() {
|
||||
// let val1 = value.from_lovelace(1000000)
|
||||
// let val2 = value.from_lovelace(2000000)
|
||||
// let foo =
|
||||
// fn(i: Value, acc: (Value, Int)) {
|
||||
// let (v, int) = acc
|
||||
// (value.add(i, v), int + 1)
|
||||
// }
|
||||
// list.foldl([val1, val2], foo, (value.from_lovelace(0), 0)) == (
|
||||
// value.from_lovelace(3000000),
|
||||
// 2,
|
||||
// )
|
||||
// }
|
Loading…
Reference in New Issue