From 6e4a16d8e00f4716b9f525bfbf3b7f53813a57f0 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Tue, 6 Aug 2024 17:00:13 +0200 Subject: [PATCH] Illustrate new failing scenario with multi-arg function identifiers As far as I could tell, this behavior is only observed when the arity of the function is higher than 1. It's fine for single-arg functions somehow. --- examples/acceptance_tests/108/aiken.lock | 7 ++++ examples/acceptance_tests/108/aiken.toml | 9 +++++ examples/acceptance_tests/108/lib/tests.ak | 44 ++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 examples/acceptance_tests/108/aiken.lock create mode 100644 examples/acceptance_tests/108/aiken.toml create mode 100644 examples/acceptance_tests/108/lib/tests.ak diff --git a/examples/acceptance_tests/108/aiken.lock b/examples/acceptance_tests/108/aiken.lock new file mode 100644 index 00000000..6e350cda --- /dev/null +++ b/examples/acceptance_tests/108/aiken.lock @@ -0,0 +1,7 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +requirements = [] +packages = [] + +[etags] diff --git a/examples/acceptance_tests/108/aiken.toml b/examples/acceptance_tests/108/aiken.toml new file mode 100644 index 00000000..8823803a --- /dev/null +++ b/examples/acceptance_tests/108/aiken.toml @@ -0,0 +1,9 @@ +name = "aiken-lang/108" +version = "0.0.0" +license = "Apache-2.0" +description = "Aiken contracts for project 'aiken-lang/108'" + +[repository] +user = "aiken-lang" +project = "108" +platform = "github" diff --git a/examples/acceptance_tests/108/lib/tests.ak b/examples/acceptance_tests/108/lib/tests.ak new file mode 100644 index 00000000..8dc074fa --- /dev/null +++ b/examples/acceptance_tests/108/lib/tests.ak @@ -0,0 +1,44 @@ +use aiken/builtin + +pub fn reduce(xs: List, zero: b, do: fn(a, b) -> b) -> b { + when xs is { + [] -> zero + [head, ..tail] -> do(head, reduce(tail, zero, do)) + } +} + +pub fn inspect_1(self: Data, result: result) -> result { + builtin.choose_data( + self, + fail, + fail, + reduce(builtin.un_list_data(self), result, fn(a, b) { inspect_1(a, b) }), + { + trace @"int" + result + }, + fail, + ) +} + +test as_lambda() { + inspect_1([14, 42], True) +} + +pub fn inspect_2(self: Data, result: result) -> result { + builtin.choose_data( + self, + fail, + fail, + reduce(builtin.un_list_data(self), result, inspect_2), + { + trace @"int" + result + }, + fail, + ) +} + +test as_identifier() { + inspect_2([14, 42], True) +}