From 5ce30b2632e23a624c3d1f69e7c111ceb1a1e7a4 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 23 May 2024 16:45:40 +0200 Subject: [PATCH] Rename AList -> Pairs due to popular demand. --- CHANGELOG.md | 1 + crates/aiken-lang/src/builtins.rs | 6 ++-- crates/aiken-project/src/tests/gen_uplc.rs | 32 +++++++++---------- .../acceptance_tests/077/validators/spend.ak | 2 +- examples/gift_card/validators/multi.ak | 2 +- examples/gift_card/validators/oneshot.ak | 4 +-- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16a3e02c..0e00830b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - **aiken-lsp**: hover and goto definition support on list tail. @rvcas - **aiken-lsp**: hover on prop test via expression. @rvcas - **aiken-lang**: a new way to emit logs that don't get erased. @micahkendall +- **aiken-lang**: new builtin types in the prelude `Pair` and `Pairs`. @KtorZ @Microproofs ### Fixed diff --git a/crates/aiken-lang/src/builtins.rs b/crates/aiken-lang/src/builtins.rs index e7ea8a13..37cd9175 100644 --- a/crates/aiken-lang/src/builtins.rs +++ b/crates/aiken-lang/src/builtins.rs @@ -23,8 +23,8 @@ pub const BOOL: &str = "Bool"; pub const INT: &str = "Int"; pub const DATA: &str = "Data"; pub const LIST: &str = "List"; -pub const ALIST: &str = "AList"; pub const PAIR: &str = "Pair"; +pub const PAIRS: &str = "Pairs"; pub const VOID: &str = "Void"; pub const G1_ELEMENT: &str = "G1Element"; pub const G2_ELEMENT: &str = "G2Element"; @@ -523,7 +523,7 @@ pub fn prelude(id_gen: &IdGenerator) -> TypeInfo { let alist_key = generic_var(id_gen.next()); let alist_value = generic_var(id_gen.next()); prelude.types.insert( - ALIST.to_string(), + PAIRS.to_string(), TypeConstructor { location: Span::empty(), parameters: vec![alist_key.clone(), alist_value.clone()], @@ -1447,7 +1447,7 @@ pub fn map(k: Rc, v: Rc) -> Rc { args: vec![pair(k, v)], alias: Some( TypeAliasAnnotation { - alias: ALIST.to_string(), + alias: PAIRS.to_string(), parameters: vec!["k".to_string(), "v".to_string()], annotation: Annotation::Constructor { location: Span::empty(), diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index 37459078..8baa5ff8 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -885,9 +885,9 @@ fn acceptance_test_7_unzip_tuple() { #[test] fn acceptance_test_7_unzip_pair() { let src = r#" - type AList = List> + type Pairs = List> - pub fn unzip(xs: AList) -> Pair, List> { + pub fn unzip(xs: Pairs) -> Pair, List> { when xs is { [] -> Pair([], []) [Pair(a, b), ..rest] -> { @@ -1573,16 +1573,16 @@ fn acceptance_test_14_list_creation() { #[test] fn acceptance_test_15_zero_arg() { let src = r#" - pub opaque type AList { + pub opaque type Pairs { inner: List>, } pub fn new() { - AList { inner: [] } + Pairs { inner: [] } } test new_1() { - new() == AList { inner: [] } + new() == Pairs { inner: [] } } "#; @@ -2116,18 +2116,18 @@ fn acceptance_test_22_filter_map() { #[test] fn acceptance_test_23_to_list() { let src = r#" - pub type AList = + pub type Pairs = List> pub opaque type AssocList { - inner: AList, + inner: Pairs, } pub fn new() -> AssocList { AssocList { inner: [] } } - pub fn to_list(m: AssocList) -> AList { + pub fn to_list(m: AssocList) -> Pairs { m.inner } @@ -2139,7 +2139,7 @@ fn acceptance_test_23_to_list() { AssocList { inner: do_insert(m.inner, k, v) } } - fn do_insert(elems: AList, k: key, v: value) -> AList { + fn do_insert(elems: Pairs, k: key, v: value) -> Pairs { when elems is { [] -> [Pair(k, v)] @@ -2997,18 +2997,18 @@ fn acceptance_test_28_unique_list() { fn acceptance_test_29_union_pair() { let src = r#" pub opaque type AssocList { - inner: AList, + inner: Pairs, } pub fn new() -> AssocList { AssocList { inner: [] } } - pub fn from_list(xs: AList) -> AssocList { + pub fn from_list(xs: Pairs) -> AssocList { AssocList { inner: do_from_list(xs) } } - fn do_from_list(xs: AList) -> AList { + fn do_from_list(xs: Pairs) -> Pairs { when xs is { [] -> [] @@ -3025,7 +3025,7 @@ fn acceptance_test_29_union_pair() { AssocList { inner: do_insert(m.inner, k, v) } } - fn do_insert(elems: AList, k: key, v: value) -> AList { + fn do_insert(elems: Pairs, k: key, v: value) -> Pairs { when elems is { [] -> [Pair(k, v)] @@ -3046,9 +3046,9 @@ fn acceptance_test_29_union_pair() { } fn do_union( - left: AList, - right: AList, - ) -> AList { + left: Pairs, + right: Pairs, + ) -> Pairs { when left is { [] -> right diff --git a/examples/acceptance_tests/077/validators/spend.ak b/examples/acceptance_tests/077/validators/spend.ak index b146853b..0902e6a9 100644 --- a/examples/acceptance_tests/077/validators/spend.ak +++ b/examples/acceptance_tests/077/validators/spend.ak @@ -18,7 +18,7 @@ validator(token_name: ByteArray, utxo_ref: OutputReference) { mint |> value.from_minted_value |> value.tokens(policy_id) - |> dict.to_list() + |> dict.to_pairs() when rdmr is { Mint -> { expect diff --git a/examples/gift_card/validators/multi.ak b/examples/gift_card/validators/multi.ak index 62ac770e..db0be4df 100644 --- a/examples/gift_card/validators/multi.ak +++ b/examples/gift_card/validators/multi.ak @@ -60,7 +60,7 @@ validator(creator: ByteArray) { mint |> value.from_minted_value |> value.tokens(policy_id) - |> dict.to_list() + |> dict.to_pairs() when rdmr is { Mint(total) -> { diff --git a/examples/gift_card/validators/oneshot.ak b/examples/gift_card/validators/oneshot.ak index aa22bf5c..a1fcc4fe 100644 --- a/examples/gift_card/validators/oneshot.ak +++ b/examples/gift_card/validators/oneshot.ak @@ -20,7 +20,7 @@ validator(token_name: ByteArray, utxo_ref: OutputReference) { mint |> value.from_minted_value |> value.tokens(policy_id) - |> dict.to_list() + |> dict.to_pairs() when rdmr is { Mint -> { @@ -43,7 +43,7 @@ validator(token_name: ByteArray, policy_id: ByteArray) { mint |> value.from_minted_value |> value.tokens(policy_id) - |> dict.to_list() + |> dict.to_pairs() amount == -1 && asset_name == token_name }