diff --git a/examples/acceptance_tests/056/aiken.lock b/examples/acceptance_tests/056/aiken.lock new file mode 100644 index 00000000..3a78b1e7 --- /dev/null +++ b/examples/acceptance_tests/056/aiken.lock @@ -0,0 +1,5 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +requirements = [] +packages = [] diff --git a/examples/acceptance_tests/056/aiken.toml b/examples/acceptance_tests/056/aiken.toml new file mode 100644 index 00000000..016dcd85 --- /dev/null +++ b/examples/acceptance_tests/056/aiken.toml @@ -0,0 +1,3 @@ +name = "aiken-lang/acceptance_test_056" +version = "0.0.0" +dependencies = [] diff --git a/examples/acceptance_tests/056/lib/choice_a.ak b/examples/acceptance_tests/056/lib/choice_a.ak new file mode 100644 index 00000000..91a0fb0d --- /dev/null +++ b/examples/acceptance_tests/056/lib/choice_a.ak @@ -0,0 +1,24 @@ +// Could possibly be forbidden by the parser instead if we have no intent to support that. +pub fn choice(self: List>) -> Option { + when self is { + [] -> None + [Some(_) as result, ..] -> result + [None, ..others] -> choice(others) + } +} + +test choice_1() { + choice([Some(14), Some(42)]) == Some(14) +} + +test choice_2() { + choice([]) == None +} + +test choice_3() { + choice([None]) == None +} + +test choice_4() { + choice([None, Some(42)]) == Some(42) +} diff --git a/examples/acceptance_tests/056/lib/choice_b.ak b/examples/acceptance_tests/056/lib/choice_b.ak new file mode 100644 index 00000000..493a31b8 --- /dev/null +++ b/examples/acceptance_tests/056/lib/choice_b.ak @@ -0,0 +1,23 @@ +pub fn choice(self: List>) -> Option { + when self is { + [] -> None + [Some(x), ..] -> Some(x) + [None, ..others] -> choice(others) + } +} + +test choice_1() { + choice([Some(14), Some(42)]) == Some(14) +} + +test choice_2() { + choice([]) == None +} + +test choice_3() { + choice([None]) == None +} + +test choice_4() { + choice([None, Some(42)]) == Some(42) +} diff --git a/examples/acceptance_tests/056/lib/choice_c.ak b/examples/acceptance_tests/056/lib/choice_c.ak new file mode 100644 index 00000000..8f38ef31 --- /dev/null +++ b/examples/acceptance_tests/056/lib/choice_c.ak @@ -0,0 +1,23 @@ +pub fn choice(self: List>) -> Option { + when self is { + [] -> None + [None, ..others] -> choice(others) + [result, ..] -> result + } +} + +test choice_1() { + choice([Some(14), Some(42)]) == Some(14) +} + +test choice_2() { + choice([]) == None +} + +test choice_3() { + choice([None]) == None +} + +test choice_4() { + choice([None, Some(42)]) == Some(42) +}