Fix scoped path for list with tail cases only plus wild card fallback

This commit is contained in:
microproofs 2024-11-18 12:21:40 -05:00
parent 18054eed1a
commit eec08fcbd9
No known key found for this signature in database
GPG Key ID: 14F93C84DE6AFD17
3 changed files with 33 additions and 4 deletions

View File

@ -428,10 +428,17 @@ impl<'a> DecisionTree<'a> {
.enumerate()
.rev()
.for_each(|(index, (_, detree))| {
if index + cases.len() == 0 {
prev.push(Marker::Push(
ScopePath::Case(index + cases.len()),
detree,
));
} else {
prev.push(Marker::PopPush(
ScopePath::Case(index + cases.len()),
detree,
));
}
});
cases

View File

@ -0,0 +1,2 @@
name = "aiken-lang/acceptance_test_006"
version = "0.0.0"

View File

@ -0,0 +1,20 @@
test baz() {
let assets =
[
("PolicyId1", [("AssetName", 20)]),
("PolicyId2", [("AssetName1", 300), ("AssetName2", 4_000)]),
("PolicyId3", []),
]
let is_empty_or_contains_policyid2 =
when assets is {
[] -> True
[_head, (p, [_, (a, q), ..] as tokens), ..] -> and {
tokens == [("AssetName1", 300), ("AssetName2", 4000)],
p == "PolicyId2",
a == "AssetName2",
q >= 4_000,
}
_ -> False
}
is_empty_or_contains_policyid2
}