Review & fix acceptance tests
Temporarily using the 'specialize-dict-key' branch from the stdlib which makes use of Pair where relevant. Once this is merged back into 'main' we should update the acceptance test toml files to keep getting them automatically upgraded. This commit also fixes an oversight in the reification of data-types now properly distinguishing between pairs and 2-tuples. Co-authored-by: Microproofs <kasey.white@cardanofoundation.org>
This commit is contained in:
parent
03a5a9293c
commit
1091eba3c3
|
@ -5,8 +5,8 @@ use crate::{
|
|||
},
|
||||
expr::TypedExpr,
|
||||
tipo::{
|
||||
fields::FieldMap, AccessorsMap, RecordAccessor, Type, TypeAliasAnnotation, TypeConstructor,
|
||||
TypeInfo, TypeVar, ValueConstructor, ValueConstructorVariant,
|
||||
fields::FieldMap, Type, TypeAliasAnnotation, TypeConstructor, TypeInfo, TypeVar,
|
||||
ValueConstructor, ValueConstructorVariant,
|
||||
},
|
||||
IdGenerator,
|
||||
};
|
||||
|
@ -343,59 +343,6 @@ pub fn prelude(id_gen: &IdGenerator) -> TypeInfo {
|
|||
.types_constructors
|
||||
.insert(PAIR.to_string(), vec![PAIR.to_string()]);
|
||||
|
||||
let mut pair_fields = HashMap::new();
|
||||
pair_fields.insert("fst".to_string(), (0, Span::empty()));
|
||||
pair_fields.insert("snd".to_string(), (1, Span::empty()));
|
||||
prelude.values.insert(
|
||||
PAIR.to_string(),
|
||||
ValueConstructor::public(
|
||||
function(
|
||||
vec![fst_parameter.clone(), snd_parameter.clone()],
|
||||
pair(fst_parameter.clone(), snd_parameter.clone()),
|
||||
),
|
||||
ValueConstructorVariant::Record {
|
||||
module: "".into(),
|
||||
name: PAIR.to_string(),
|
||||
field_map: Some(FieldMap {
|
||||
arity: 2,
|
||||
fields: pair_fields,
|
||||
is_function: false,
|
||||
}),
|
||||
arity: 2,
|
||||
location: Span::empty(),
|
||||
constructors_count: 1,
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
let mut accessors = HashMap::new();
|
||||
accessors.insert(
|
||||
"fst".to_string(),
|
||||
RecordAccessor {
|
||||
index: 0,
|
||||
label: "fst".to_string(),
|
||||
tipo: fst_parameter.clone(),
|
||||
},
|
||||
);
|
||||
|
||||
accessors.insert(
|
||||
"snd".to_string(),
|
||||
RecordAccessor {
|
||||
index: 1,
|
||||
label: "snd".to_string(),
|
||||
tipo: snd_parameter.clone(),
|
||||
},
|
||||
);
|
||||
|
||||
prelude.accessors.insert(
|
||||
PAIR.to_string(),
|
||||
AccessorsMap {
|
||||
public: true,
|
||||
tipo: pair(fst_parameter.clone(), snd_parameter.clone()),
|
||||
accessors,
|
||||
},
|
||||
);
|
||||
|
||||
// String
|
||||
prelude.types.insert(
|
||||
STRING.to_string(),
|
||||
|
|
|
@ -793,11 +793,10 @@ impl UntypedExpr {
|
|||
},
|
||||
|
||||
uplc::ast::Constant::ProtoPair(_, _, left, right) => match tipo {
|
||||
Type::Tuple { elems, .. } => Ok(UntypedExpr::Tuple {
|
||||
location: Span::empty(),
|
||||
elems: [left.as_ref(), right.as_ref()]
|
||||
Type::Pair { fst, snd, .. } => {
|
||||
let elems = [left.as_ref(), right.as_ref()]
|
||||
.into_iter()
|
||||
.zip(elems)
|
||||
.zip([fst, snd])
|
||||
.map(|(arg, arg_type)| {
|
||||
UntypedExpr::do_reify_constant(
|
||||
generics,
|
||||
|
@ -806,10 +805,16 @@ impl UntypedExpr {
|
|||
arg_type,
|
||||
)
|
||||
})
|
||||
.collect::<Result<Vec<_>, _>>()?,
|
||||
}),
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
Ok(UntypedExpr::Pair {
|
||||
location: Span::empty(),
|
||||
fst: elems.first().unwrap().to_owned().into(),
|
||||
snd: elems.last().unwrap().to_owned().into(),
|
||||
})
|
||||
}
|
||||
_ => Err(format!(
|
||||
"invalid type annotation. expected Tuple but got: {tipo:?}"
|
||||
"invalid type annotation. expected Pair but got: {tipo:?}"
|
||||
)),
|
||||
},
|
||||
|
||||
|
@ -904,9 +909,10 @@ impl UntypedExpr {
|
|||
location: Span::empty(),
|
||||
elements: kvs
|
||||
.into_iter()
|
||||
.map(|(k, v)| UntypedExpr::Tuple {
|
||||
.map(|(k, v)| UntypedExpr::Pair {
|
||||
location: Span::empty(),
|
||||
elems: vec![UntypedExpr::reify_blind(k), UntypedExpr::reify_blind(v)],
|
||||
fst: UntypedExpr::reify_blind(k).into(),
|
||||
snd: UntypedExpr::reify_blind(v).into(),
|
||||
})
|
||||
.collect::<Vec<_>>(),
|
||||
tail: None,
|
||||
|
@ -1022,6 +1028,21 @@ impl UntypedExpr {
|
|||
})
|
||||
.collect::<Result<Vec<_>, _>>()?,
|
||||
}),
|
||||
Type::Pair { fst, snd, .. } => {
|
||||
let mut elems = args
|
||||
.into_iter()
|
||||
.zip([fst, snd])
|
||||
.map(|(arg, arg_type)| {
|
||||
UntypedExpr::do_reify_data(generics, data_types, arg, arg_type)
|
||||
})
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
Ok(UntypedExpr::Pair {
|
||||
location: Span::empty(),
|
||||
fst: elems.remove(0).into(),
|
||||
snd: elems.remove(0).into(),
|
||||
})
|
||||
}
|
||||
_ => Err(format!(
|
||||
"invalid type annotation. expected List but got: {tipo:?}"
|
||||
)),
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569180, nanos_since_epoch = 895108000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463885, nanos_since_epoch = 953327000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
@ -42,8 +42,8 @@
|
|||
"$ref": "#/definitions/Data"
|
||||
}
|
||||
},
|
||||
"compiledCode": "58d501000032323232323232222533300432330010013758601460166016600e6ea8c028c01cdd50011129998048008a501325333007333007533300a3253330083370e900118049baa00114bd6f7b63009bab300d300a375400264660020026eacc034c038c028dd518068019129998060008a60103d87a80001323232533300c3371e91105000000000000375c601a006266e95200033010374c00297ae01330050050023756601a0046020004601c00229445282504a229444cc00c00c004c030004526136565734aae7555cf2ab9f5740ae855d101",
|
||||
"hash": "416db3eec35a0e94198a5123de948b773f98d4fcba87f581598a8068"
|
||||
"compiledCode": "58d601000032323232323232222533300432330010013758601460166016600e6ea8c028c01cdd50011129998048008a501325333007333007533300a3253330083370e900118049baa00114bd7009bac300d300a375400264660020026eb0c034c038c028dd518068019129998060008a6103d87a80001323232533300c3371e91105000000000000375c6022006266e95200033010374e00297ae013300500500237586020602200460200046eb0c0380045288a504a094452889980180180098060008a4c26cacae6955ceaab9e5573eae815d0aba201",
|
||||
"hash": "7726e9cfbd734a0aa846a7fb1648199ae7d746b0ce123c6c6df780ca"
|
||||
}
|
||||
],
|
||||
"definitions": {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569179, nanos_since_epoch = 784240000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463884, nanos_since_epoch = 765100000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569192, nanos_since_epoch = 806001000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463888, nanos_since_epoch = 383357000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569192, nanos_since_epoch = 805967000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463890, nanos_since_epoch = 965623000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569179, nanos_since_epoch = 348000000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463887, nanos_since_epoch = 961778000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -6,7 +6,7 @@ type Foo {
|
|||
}
|
||||
|
||||
fn get_constr(data: Data) -> Int {
|
||||
builtin.un_constr_data(data).fst
|
||||
builtin.un_constr_data(data).1st
|
||||
}
|
||||
|
||||
test foo() {
|
||||
|
@ -23,7 +23,7 @@ fn map(list: List<a>, f: fn(a) -> b) -> List<b> {
|
|||
}
|
||||
|
||||
fn get_fields(data: Data) -> List<Int> {
|
||||
builtin.un_constr_data(data).snd
|
||||
builtin.un_constr_data(data).2nd
|
||||
|> map(builtin.un_i_data)
|
||||
}
|
||||
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569194, nanos_since_epoch = 888685000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463902, nanos_since_epoch = 215633000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569186, nanos_since_epoch = 741545000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463897, nanos_since_epoch = 385755000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569179, nanos_since_epoch = 533207000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463893, nanos_since_epoch = 847358000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569178, nanos_since_epoch = 711093000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463886, nanos_since_epoch = 284148000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569181, nanos_since_epoch = 605261000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463884, nanos_since_epoch = 163138000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569187, nanos_since_epoch = 164467000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463896, nanos_since_epoch = 514093000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569187, nanos_since_epoch = 610647000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463896, nanos_since_epoch = 410684000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569191, nanos_since_epoch = 273641000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463899, nanos_since_epoch = 4921000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569186, nanos_since_epoch = 96782000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463884, nanos_since_epoch = 166567000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
@ -31,8 +31,8 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"compiledCode": "5901ae010000323232323232322322232323225333009323232533300c3007300d3754002264646464a666026602c00426464a666024601a60266ea803854ccc048c8cc004004018894ccc05c004528099299980a99baf301a30173754603400402429444cc00c00c004c06800454ccc048c0300044cdc78010080a501616375a60260046eb8c04400458c050004cc88c94ccc044c02cc048dd50008a5eb7bdb1804dd5980b18099baa001323300100100322533301500114c0103d87a8000132323253330153371e00c6eb8c05800c4cdd2a4000660326e980052f5c026600a00a0046eacc058008c064008c05c004c8cc004004dd5980a180a980a980a980a8019129998098008a5eb7bdb1804c8c8c8c94ccc050cdc7a45000021003133018337606ea4008dd3000998030030019bab3015003375c6026004602e004602a0026eb8c04cc040dd50019bac3012001300e37540042c60206022004601e00260166ea80045261365632533300830030011533300b300a37540082930b0a99980418010008a99980598051baa00414985858c020dd50019b8748008dc3a40006eb80055cd2ab9d5573caae7d5d02ba15745",
|
||||
"hash": "c537a66202fafb789b2e76c6a5430b53b0069e223ba8ad4b5b793d51"
|
||||
"compiledCode": "5901bc010000323232323232322322232323225333009323232533300c3007300d3754002264646464a666026602c00426464a666024601a60266ea803854ccc048c8cc004004018894ccc05c004528099299980a99baf301a30173754603400402429444cc00c00c004c06800454ccc048c0300044cdc78010080a501616375a602c602e0046eb8c05400458dd6180a0009991192999808980598091baa00114bd7009bac301630133754002646600200200644a66602a002298103d87a8000132323253330153371e00c6eb8c06800c4cdd2a4000660326e9c0052f5c026600a00a0046eb0c064c068008c064008dd6180b80099198008009bac3014301530153015301500322533301300114bd70099191919299980a19b8f4881000021003133018374e660306ea4008cc060dd3800a5eb80cc01801800cdd6180c180c8019bae301700230170023758602a0026eb8c04cc040dd50019bac3012001300e37540042c60206022004601e00260166ea80045261365632533300830030011533300b300a37540082930b0a99980418010008a99980598051baa00414985858c020dd50019b8748008dc3a40006eb80055cd2ab9d5573caae7d5d02ba15745",
|
||||
"hash": "3dea1be2920aef692e0bcb894a17a984541682359c8c2b04679fca75"
|
||||
}
|
||||
],
|
||||
"definitions": {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569178, nanos_since_epoch = 275562000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463891, nanos_since_epoch = 684027000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569180, nanos_since_epoch = 807185000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463887, nanos_since_epoch = 129564000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
[[requirements]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
source = "github"
|
||||
|
||||
[[packages]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
requirements = []
|
||||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569180, nanos_since_epoch = 976274000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@specialize-dict-key" = [{ secs_since_epoch = 1713463739, nanos_since_epoch = 865019000 }, "4a03ebbbc134cedfe1bf03b59d5ed476f4dd97a769dc259552a9086e786bb108"]
|
||||
|
|
|
@ -4,5 +4,5 @@ description = ""
|
|||
|
||||
[[dependencies]]
|
||||
name = 'aiken-lang/stdlib'
|
||||
version = 'main'
|
||||
version = 'specialize-dict-key'
|
||||
source = 'github'
|
||||
|
|
|
@ -24,6 +24,6 @@ test tuple_when() {
|
|||
}
|
||||
|
||||
test t() {
|
||||
trace cbor.diagnostic(list.map([(#"", 20)], snd_pair))
|
||||
trace cbor.diagnostic(list.map([Pair(#"", 20)], snd_pair))
|
||||
True
|
||||
}
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569179, nanos_since_epoch = 891129000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463893, nanos_since_epoch = 54580000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
[[requirements]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
source = "github"
|
||||
|
||||
[[packages]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
requirements = []
|
||||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569182, nanos_since_epoch = 746568000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@specialize-dict-key" = [{ secs_since_epoch = 1713463624, nanos_since_epoch = 244261000 }, "4a03ebbbc134cedfe1bf03b59d5ed476f4dd97a769dc259552a9086e786bb108"]
|
||||
|
|
|
@ -3,6 +3,6 @@ version = "0.0.0"
|
|||
description = ""
|
||||
|
||||
[[dependencies]]
|
||||
name = 'aiken-lang/stdlib'
|
||||
version = 'main'
|
||||
source = 'github'
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "specialize-dict-key"
|
||||
source = "github"
|
||||
|
|
|
@ -13,4 +13,4 @@ requirements = []
|
|||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569188, nanos_since_epoch = 217936000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1713463884, nanos_since_epoch = 866338000 }, "2a710731e0127ec3e21c6c3962a0254c98602e7428b33fc4fcaa67ab368ce1b1"]
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
[[requirements]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
source = "github"
|
||||
|
||||
[[packages]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
requirements = []
|
||||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569179, nanos_since_epoch = 408850000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@specialize-dict-key" = [{ secs_since_epoch = 1713463713, nanos_since_epoch = 938757000 }, "4a03ebbbc134cedfe1bf03b59d5ed476f4dd97a769dc259552a9086e786bb108"]
|
||||
|
|
|
@ -4,5 +4,5 @@ description = ""
|
|||
|
||||
[[dependencies]]
|
||||
name = 'aiken-lang/stdlib'
|
||||
version = 'main'
|
||||
version = 'specialize-dict-key'
|
||||
source = 'github'
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
},
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
exit_codes=()
|
||||
|
||||
TESTS=()
|
||||
for scenario in $(find . -maxdepth 1 -mindepth 1 -type d ! -name script_context); do
|
||||
./run $scenario &
|
||||
TESTS+=("$!")
|
||||
done
|
||||
|
||||
for p in ${TESTS[@]}; do
|
||||
wait $p
|
||||
exit_codes+=("$?")
|
||||
done
|
||||
# for scenario in $(find . -maxdepth 1 -mindepth 1 -type d ! -name script_context); do
|
||||
# ./run $scenario &
|
||||
# TESTS+=("$!")
|
||||
# done
|
||||
#
|
||||
# for p in ${TESTS[@]}; do
|
||||
# wait $p
|
||||
# exit_codes+=("$?")
|
||||
# done
|
||||
|
||||
|
||||
for interaction in $(find script_context/validators -type f); do
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
[[requirements]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
source = "github"
|
||||
|
||||
[[packages]]
|
||||
name = "aiken-lang/stdlib"
|
||||
version = "main"
|
||||
version = "specialize-dict-key"
|
||||
requirements = []
|
||||
source = "github"
|
||||
|
||||
[etags]
|
||||
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1711569203, nanos_since_epoch = 197638000 }, "b3c7a0d03fa7a9f454fccd45c69a09010858ec0b6c9a1f5c71ef2ebc36fc46bb"]
|
||||
"aiken-lang/stdlib@specialize-dict-key" = [{ secs_since_epoch = 1713463977, nanos_since_epoch = 479564000 }, "4a03ebbbc134cedfe1bf03b59d5ed476f4dd97a769dc259552a9086e786bb108"]
|
||||
|
|
|
@ -4,5 +4,5 @@ description = ''
|
|||
|
||||
[[dependencies]]
|
||||
name = 'aiken-lang/stdlib'
|
||||
version = 'main'
|
||||
version = 'specialize-dict-key'
|
||||
source = 'github'
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"plutusVersion": "v2",
|
||||
"compiler": {
|
||||
"name": "Aiken",
|
||||
"version": "v1.0.26-alpha+075668b"
|
||||
"version": "v1.0.26-alpha+4d36884"
|
||||
}
|
||||
},
|
||||
"validators": [
|
||||
|
@ -23,8 +23,8 @@
|
|||
"$ref": "#/definitions/Void"
|
||||
}
|
||||
},
|
||||
"compiledCode": "59035a0100003232323232323223232232253330073253330083330083375e601a601c601c601c601c601c601c601c601c601c601c601c60146ea8c004c028dd5001260126d8799f58200000000000000000000000000000000000000000000000000000000000000000ff004a09444c94ccc024c94ccc028cdc3a400460166ea80044c94ccc02ccdd7980218069baa0014c0126d8799f58200000000000000000000000000000000000000000000000000000000000000000ff0013009375a6006601a6ea8004528180798061baa001163001300b3754006264646464a66601a6464a6660240022c2a666024602a002264a66602066ebcc020c048dd50009ba6300448202a35ae41c54ccc040cdd7980498091baa30093012375400298122d8799f581c11111111111111111111111111111111111111111111111111111111ff00153330105333010300e30113754601060246ea8c024c048dd50008a5014a22a666020600a600660246ea80044cdd7980398091baa0014c0103d87a800014a029405280a503014001163758600260206ea8c01cc040dd500411809980a180a000899baf3004300f3754600c601e6ea801cdd31800a40a8294094ccc034c02c00452f5bded8c0264646600200297adef6c6022533301300113301433760981014000374c00697adef6c60132323232533301430093300a488100002133018337609801014000374c00e00a2a66602866e3d22100002133018337609801014000374c00e00626603066ec0dd48011ba6001330060060033756602a0066eb8c04c008c05c008c054004c8cc0040052f5bded8c044a66602400226602666ec13001014000375000697adef6c601323232325333013300833009488100002133017337609801014000375000e00a2a66602666e3d22100002133017337609801014000375000e00626602e66ec0dd48011ba800133006006003375a60280066eb8c048008c058008c050004dd7a60103d879800022533300c33720004002298103d87980001533300c3371e0040022980103d87a800014c103d87b80002300f30103010301000114a04601c601e00229408c034004526136563253330063004300700115333009300800114985858dd5000992999802180118028008a99980398030008a4c2c2c6ea8008dc3a4000ae6955ceaab9e5573eae815d0aba201",
|
||||
"hash": "2c19b6a631b86636d34dec01ccc7929a4cd2ab0690f8b08cca44d735"
|
||||
"compiledCode": "5903290100003232323232323223232232253330073253330083330083375e601a601c601c601c601c601c601c601c601c601c601c601c60146ea8c004c028dd5001260126d8799f58200000000000000000000000000000000000000000000000000000000000000000ff004a09444c94ccc024c94ccc028cdc3a400460166ea80044c94ccc02ccdd7980218069baa0014c0126d8799f58200000000000000000000000000000000000000000000000000000000000000000ff0013009375a6006601a6ea8004528180798061baa001163001300b375400626464a6660166464a6660200022c2a6660206026002264a66601c66ebcc018c040dd50009ba6300448202a35ae41c54ccc038cdd7980398081baa30073010375400298122d8799f581c11111111111111111111111111111111111111111111111111111111ff001533300e533300e300c300f3754600c60206ea8c01cc040dd50008a5014a22a66601c66ebcc00cc040dd5000a60103d879800013375e600a60206ea800530103d87a800014a029405280a5030120011637586002601c6ea8c014c038dd50031180898091809000899baf3002300d37546008601a6ea8014dd31800a40a8294094ccc02cc02400452f5bded8c0264646600200297adef6c6022533301100113301233760981014000374c00697adef6c60132323232533301233720910100002133016337609801014000374c00e00a2a66602466e3d22100002133016337609801014000374c00e00626602c66ec0dd48011ba600133006006003375660260066eb8c044008c054008c04c004c8cc0040052f5bded8c044a66602000226602266ec13001014000375000697adef6c60132323232533301133720910100002133015337609801014000375000e00a2a66602266e3d22100002133015337609801014000375000e00626602a66ec0dd48011ba800133006006003375a60240066eb8c040008c050008c0480048c03cc040c040c0400045281180718078008a502300d00114984d958c94ccc018c010c01c00454ccc024c0200045261616375400264a6660086004600a0022a66600e600c0022930b0b1baa002370e90002b9a5573aaae7955cfaba05742ae881",
|
||||
"hash": "c1f48659f124f9dcd673c40fef80ecfa5b42a17949ff12fab7f1c269"
|
||||
},
|
||||
{
|
||||
"title": "deploy.spend",
|
||||
|
@ -40,8 +40,8 @@
|
|||
"$ref": "#/definitions/Data"
|
||||
}
|
||||
},
|
||||
"compiledCode": "59022b01000032323232323232222533300453330043375e00698103d879800013253330053323223253330093370e900018051baa00113232533300b3375e980106d8799f182aff0000213370e600a00890020a50533300a3370e900018059baa00113232533300f3012002149858dd6980800098061baa00116300e300b37540022c64646600200200644a66601c0022980103d87a80001323232533300e3371e00c6eb8c03c00c4cdd2a40006602400297ae0133005005002300f0023012002301000137286ecd30106d8799f182aff00300100122533300a0011480004cdc02400466004004601a0026eacc028c02cc02cc02cc02cc02cc02cc02cc02cc02cc02cc01cdd5180098039baa00213232533300a00116132533300b00116132533300932533300a3375e600a60186ea800530126d87a9f5820fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273ff0013375e601e60206020602060186ea800530122d8799f581ce37db487fbd58c45d059bcbf5cd6b1604d3bec16cf888f1395a4ebc4ff0014a0601c0062a66601266ebcc038c03cc02cdd5180298059baa0014c012ad8799fd8799fd8799f581c66666666666666666666666666666666666666666666666666666666ffffff00153330093370e900218051baa3004300b37540022944585280a50300d001300d0013758600260106ea8c008c020dd500191805980618060008a502300a00114a029309b2b2b9a5573aaae7955cfaba05742ae881",
|
||||
"hash": "6aa6a0ba9b1706f85f3d06f8a026db77191ed91a019afddb63a5db26"
|
||||
"compiledCode": "59023e01000032323232323232222533300453330043375e00698103d879800013253330053323223253330093370e900018051baa00113232533300b3375e980106d8799f182aff0000213370e600a00890020a50533300a3370e900018059baa00113232533300f3012002149858dd6980800098061baa00116300e300b37540022c64646600200200644a66601c0022980103d87a8000132323232533300f3372200e0042a66601e66e3c01c0084cdd2a40006602600297ae014c0103d87a80001330060060033010003375c601c004602400460200026e50dd9a6106d8799f182aff00300100122533300a0011480004cdc02400466004004601a0026eacc028c02cc02cc02cc02cc02cc02cc02cc02cc02cc02cc01cdd5180098039baa00213232533300a00116132533300b00116132533300932533300a3375e600a60186ea800530126d87a9f5820fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273ff0013375e601e60206020602060186ea800530122d8799f581ce37db487fbd58c45d059bcbf5cd6b1604d3bec16cf888f1395a4ebc4ff0014a0601c0062a66601266ebcc038c03cc02cdd5180298059baa0014c012ad8799fd8799fd8799f581c66666666666666666666666666666666666666666666666666666666ffffff00153330093370e900218051baa3004300b37540022944585280a50300d001300d0013758600260106ea8c008c020dd500191805980618060008a502300a00114a029309b2b2b9a5573aaae7955cfaba05742ae881",
|
||||
"hash": "a77ca3bb8551334cbed20bafe31b3a2ac2d1862d065b7994864ebc5b"
|
||||
},
|
||||
{
|
||||
"title": "mint.mint",
|
||||
|
@ -51,8 +51,8 @@
|
|||
"$ref": "#/definitions/Data"
|
||||
}
|
||||
},
|
||||
"compiledCode": "5902b4010000323232323232322253330033232323232533233009323232533300f3012002132533300d3005300e3754002266e3c008dd7180918079baa001163008300e37540142c6eb8c040004cc004004cc010c00cdd5980298061baa3007300c37540109110022533300e00114bd70099807980618080009980100118088008a999191980599912999806980298071baa002132533300e3005300f37540022c266e1cdd6980998081baa001483c850c8cc004004cc88c94ccc044c020c048dd50008a5eb7bdb1804dd5980b18099baa001323300100100322533301500114c0103d87a8000132323253330153371e00c6eb8c05800c4c02ccc064dd3000a5eb804cc014014008dd5980b001180c801180b80098039bab3009301037540046eb8c04cc040dd50019129998090008a6103d87a8000132323253330123371e91103666f6f00375c6026006260106602c6ea00052f5c026600a00a0046eb4c04c008c058008c05000458c01cc034dd5004980418069baa009132323232533300f3007301037540022a66601e66ebc038c050c044dd50008980318019bab300230113754601860226ea80345280b1991191980080080191299980a8008a6103d87a8000132323253330153375e00c602c006260166603200297ae01330050050023016002301900230170013756600260206ea8c02cc040dd5006180518081baa00c2301330143014301430143014301430143014301400130010012253330100011480004cdc0240046600400460260026e952000370e90010a50370e90000a5023300200148810022323300100100322533300d00114bd6f7b630099191919299980719b8f0070021003133012337606ea4008dd3000998030030019bab300f003375c601a0046022004601e0024601660186018601860180024601460160024601200229309b2b2b9a5573aaae7955cfaba05742ae89",
|
||||
"hash": "148b7dd21a30a5176713f946d88d0a3617a9d10705473319f6e3c04a"
|
||||
"compiledCode": "590303010000323232323232322253330033232323232533233009323232533300f3012002132533300d3005300e3754002266e3c008dd7180918079baa001163008300e37540142c6eb8c040004cc004004cc010c00cdd5980298061baa3007300c37540109110022533300e00114bd70099807980618080009980100118088008a999191980599912999806980298071baa002132533300e3005300f37540022c266e1cdd6980998081baa001483c850c8cc004004cc88c94ccc044c020c048dd50008a5eb7bdb1804dd5980b18099baa001323300100100322533301500114c0103d87a800013232323253330163372200e0042a66602c66e3c01c0084c030cc068dd3000a5eb80530103d87a80001330060060033756602e0066eb8c054008c064008c05c004c01cdd5980498081baa002375c602660206ea800c894ccc0480045300103d87a800013232323253330133372291103666f6f00002153330133371e910103666f6f000021300933017375000297ae014c0103d87a8000133006006003375a60280066eb8c048008c058008c05000458c01cc034dd5004980418069baa009132323232533300f3007301037540022a66601e66ebc038c044c8cdd8180a800980a980b0009bac3014301137540022600c60046eacc010c044dd5180618089baa00d14a02c64660020026eacc010c044dd5180618089baa00d22533301300114c103d87a80001323253330123375e6026004601c60286ea80404c020cc058dd39980b18098011980b180a00125eb812f5c0266008008002602e004602a002600200244a66602200229000099b8048008cc008008c0500048c044c048c048c048c048c048c048c048c048c048004dd2a40006e1d200214a06e1d200014a046600400291010022323300100100322533300d00114bd6f7b630099191919299980719b910070021533300e3371e00e0042006200a26602466ec0dd48011ba6001330060060033756601e0066eb8c034008c044008c03c0048c02cc030c030c030c0300048c028c02c0048c024004526136565734aae7555cf2ab9f5740ae855d101",
|
||||
"hash": "44f78e74dc636752b67e08bd512dccb429539645707ad3a898e94113"
|
||||
},
|
||||
{
|
||||
"title": "withdrawals.spend",
|
||||
|
@ -68,8 +68,8 @@
|
|||
"$ref": "#/definitions/Void"
|
||||
}
|
||||
},
|
||||
"compiledCode": "5902010100003232323232323223223225333006323232533300932533300a3370e900118059baa0011613370e6eb4c03cc030dd5000a40a8660026eacc008c02cdd5180198059baa0044c0126d8799fd8799f581c22222222222222222222222222222222222222222222222222222222ffff001533300932533300a3370e900118059baa0011613370e6eb4c03cc030dd5000a4038660026eacc008c02cdd5180198059baa0044c126d8799fd87a9f581cafddc16c18e7d8de379fb9aad39b3d1b5afd27603e5ebac818432a72ffff0013375e6e9cc8cc004004dd5980198061baa3004300c375400a44a66601c002297ae013300f300c3010001330020023011001374e6601a98126d8799fd8799f581c22222222222222222222222222222222222222222222222222222222ffff003300d4c126d8799fd87a9f581cafddc16c18e7d8de379fb9aad39b3d1b5afd27603e5ebac818432a72ffff004bd700a5014a044646600200200644a66601e002298103d87a80001323232533300f3375e00c6020006266e95200033013375000297ae0133005005002375a6020004602600460220024601a601c601c601c601c601c601c0024601800229309b2b19299980299b8748000c01800454ccc020c01c0045261616375400264a66600666e1d2000300400115333006300500114985858dd5000ab9a5573aaae7955cfaba05742ae89",
|
||||
"hash": "4d223be4711a6154da0c1e9ff7f158a6716d4e8eacde3e3922f3fae9"
|
||||
"compiledCode": "5902310100003232323232323223223225333006323232533300932533300a3370e900118059baa0011613370e6eb4c030c8cdd81808000980818088009bac300f300c3754002902a198009bab3002300b3754600660166ea80108cdd79805800a6126d8799fd8799f581c22222222222222222222222222222222222222222222222222222222ffff001533300932533300a3370e900118059baa0011613370e6eb4c030c8cdd81808000980818088009bac300f300c3754002900e198009bab3002300b3754600660166ea80108cdd79805800a60126d8799fd87a9f581cafddc16c18e7d8de379fb9aad39b3d1b5afd27603e5ebac818432a72ffff0013375e6e9cc8cc004004dd5980198061baa3004300c375400a44a66601c002297ae013300f300c3010001330020023011001374e6601a98126d8799fd8799f581c22222222222222222222222222222222222222222222222222222222ffff003300d4c126d8799fd87a9f581cafddc16c18e7d8de379fb9aad39b3d1b5afd27603e5ebac818432a72ffff004bd700a5014a044646600200200644a66601e002298103d87a800013232533300e300500213374a9000198091ba733012300f0023301230100024bd7025eb804cc010010004c04c008c0440048c034c038c038c038c038c038c0380048c030004526136563253330053370e900018030008a99980418038008a4c2c2c6ea8004c94ccc00ccdc3a400060080022a66600c600a0022930b0b1baa0015734aae7555cf2ab9f5740ae855d11",
|
||||
"hash": "0ce02b31bca5fbbbb9e4e1f050781b2272590945dc6e1094dc3d2bde"
|
||||
}
|
||||
],
|
||||
"definitions": {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use aiken/dict
|
||||
use aiken/list
|
||||
use aiken/transaction.{Mint, ScriptContext}
|
||||
use aiken/transaction/value
|
||||
|
||||
|
@ -36,6 +37,7 @@ fn assert_mint(purpose, transaction) {
|
|||
}
|
||||
|
||||
fn assert_redeemers(ctx, my_redeemer) {
|
||||
expect Some(redeemer) = dict.get(ctx.transaction.redeemers, ctx.purpose)
|
||||
my_redeemer == redeemer && dict.size(ctx.transaction.redeemers) == 1
|
||||
expect Some(Pair(_, redeemer)) =
|
||||
list.find(ctx.transaction.redeemers, fn(kv) { kv.1st == ctx.purpose })
|
||||
my_redeemer == redeemer && list.length(ctx.transaction.redeemers) == 1
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use aiken/dict
|
||||
use aiken/list
|
||||
use aiken/transaction.{ScriptContext}
|
||||
use aiken/transaction/credential.{
|
||||
Inline, ScriptCredential, VerificationKeyCredential,
|
||||
|
@ -21,15 +21,17 @@ validator {
|
|||
)
|
||||
|
||||
and {
|
||||
when dict.get(ctx.transaction.withdrawals, alice) is {
|
||||
when
|
||||
list.find(ctx.transaction.withdrawals, fn(kv) { kv.1st == alice })
|
||||
is {
|
||||
None -> fail @"alice's withdrawal not found"
|
||||
Some(value) -> value == 42
|
||||
Some(value) -> value.2nd == 42
|
||||
},
|
||||
when dict.get(ctx.transaction.withdrawals, bob) is {
|
||||
when list.find(ctx.transaction.withdrawals, fn(kv) { kv.1st == bob }) is {
|
||||
None -> fail @"bob's withdrawal not found"
|
||||
Some(value) -> value == 14
|
||||
Some(value) -> value.2nd == 14
|
||||
},
|
||||
dict.keys(ctx.transaction.withdrawals) == [alice, bob],
|
||||
list.map(ctx.transaction.withdrawals, fn(kv) { kv.1st }) == [alice, bob],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue