From 5067aad0d82a1fca2b03689cb6f494b23880a5f3 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Tue, 13 Aug 2024 17:05:41 +0200 Subject: [PATCH] Fix 'Pair' formatter inside forced unbroken components. --- crates/aiken-lang/src/format.rs | 14 +++--- crates/aiken-lang/src/tests/format.rs | 24 ++++++++++ .../src/tests/snapshots/format_long_pair.snap | 35 ++++++++++++++ .../v3/validators/proposing_all.ak | 8 ++-- .../v3/validators/simple_spend.ak | 14 +++--- .../script_context/v3/validators/voting.ak | 46 ++++++++++++------- 6 files changed, 107 insertions(+), 34 deletions(-) create mode 100644 crates/aiken-lang/src/tests/snapshots/format_long_pair.snap diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index 8d0f09b9..0952e099 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -998,14 +998,12 @@ impl<'comments> Formatter<'comments> { wrap_args(elems.iter().map(|e| (self.wrap_expr(e), false))).group() } - UntypedExpr::Pair { fst, snd, .. } => "Pair" - .to_doc() - .append("(") - .append(self.expr(fst, false)) - .append(break_(",", ", ")) - .append(self.expr(snd, false)) - .append(")") - .group(), + UntypedExpr::Pair { fst, snd, .. } => { + let elems = [fst, snd]; + "Pair" + .to_doc() + .append(wrap_args(elems.iter().map(|e| (self.wrap_expr(e), false))).group()) + } UntypedExpr::TupleIndex { index, tuple, .. } => { let suffix = Ordinal(*index + 1).suffix().to_doc(); diff --git a/crates/aiken-lang/src/tests/format.rs b/crates/aiken-lang/src/tests/format.rs index 9cde42dc..d2015390 100644 --- a/crates/aiken-lang/src/tests/format.rs +++ b/crates/aiken-lang/src/tests/format.rs @@ -1116,3 +1116,27 @@ fn format_long_imports() { "# ); } + +#[test] +fn format_long_pair() { + assert_format!( + r#" + test foo() { + expect(Some([ + Pair(GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain), + ])) == whatever + + expect(Some([ + Foo(GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain), + ])) == whatever + + expect(Some([ + (GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain), + ])) == whatever + } + "# + ); +} diff --git a/crates/aiken-lang/src/tests/snapshots/format_long_pair.snap b/crates/aiken-lang/src/tests/snapshots/format_long_pair.snap new file mode 100644 index 00000000..165e7c00 --- /dev/null +++ b/crates/aiken-lang/src/tests/snapshots/format_long_pair.snap @@ -0,0 +1,35 @@ +--- +source: crates/aiken-lang/src/tests/format.rs +description: "Code:\n\ntest foo() {\n expect(Some([\n Pair(GovernanceActionId { transaction: only7s, proposal_procedure: 2 },\n Abstain),\n ])) == whatever\n\n expect(Some([\n Foo(GovernanceActionId { transaction: only7s, proposal_procedure: 2 },\n Abstain),\n ])) == whatever\n\n expect(Some([\n (GovernanceActionId { transaction: only7s, proposal_procedure: 2 },\n Abstain),\n ])) == whatever\n}\n" +--- +test foo() { + expect + Some( + [ + Pair( + GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain, + ), + ], + ) == whatever + + expect + Some( + [ + Foo( + GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain, + ), + ], + ) == whatever + + expect + Some( + [ + ( + GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain, + ), + ], + ) == whatever +} diff --git a/examples/acceptance_tests/script_context/v3/validators/proposing_all.ak b/examples/acceptance_tests/script_context/v3/validators/proposing_all.ak index ef11d5b7..7ca68dde 100644 --- a/examples/acceptance_tests/script_context/v3/validators/proposing_all.ak +++ b/examples/acceptance_tests/script_context/v3/validators/proposing_all.ak @@ -46,10 +46,12 @@ validator { expect TreasuryWithdrawal { beneficiaries: [ - Pair(VerificationKey( - #"11111111111111111111111111111111111111111111111111111111", + Pair( + VerificationKey( + #"11111111111111111111111111111111111111111111111111111111", + ), + 1_000_000, ), - 1_000_000), ], guardrails: None, } == action diff --git a/examples/acceptance_tests/script_context/v3/validators/simple_spend.ak b/examples/acceptance_tests/script_context/v3/validators/simple_spend.ak index 8973fc83..fe628189 100644 --- a/examples/acceptance_tests/script_context/v3/validators/simple_spend.ak +++ b/examples/acceptance_tests/script_context/v3/validators/simple_spend.ak @@ -75,13 +75,15 @@ fn assert_inputs(inputs: List) { fn assert_redeemers(redeemers: Pairs) { expect [ - Pair(Spend( - OutputReference { - transaction_id: #"0000000000000000000000000000000000000000000000000000000000000000", - output_index: 0, - }, + Pair( + Spend( + OutputReference { + transaction_id: #"0000000000000000000000000000000000000000000000000000000000000000", + output_index: 0, + }, + ), + void(), ), - void()), ] == redeemers Void } diff --git a/examples/acceptance_tests/script_context/v3/validators/voting.ak b/examples/acceptance_tests/script_context/v3/validators/voting.ak index 9641316c..1c14ed9e 100644 --- a/examples/acceptance_tests/script_context/v3/validators/voting.ak +++ b/examples/acceptance_tests/script_context/v3/validators/voting.ak @@ -35,14 +35,18 @@ validator { expect Some( - Pair(ConstitutionalCommitteeMember(VerificationKey(only0s)), - [ - Pair(GovernanceActionId { - transaction: only9s, - proposal_procedure: 152, - }, - No), - ]), + Pair( + ConstitutionalCommitteeMember(VerificationKey(only0s)), + [ + Pair( + GovernanceActionId { + transaction: only9s, + proposal_procedure: 152, + }, + No, + ), + ], + ), ) == list.at(votes, 1) expect Some(Pair(DelegateRepresentative(Script(..)), [_, ..])) = @@ -50,15 +54,23 @@ validator { expect Some( - Pair(DelegateRepresentative(VerificationKey(only0s)), - [ - Pair(GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, - Abstain), - Pair(GovernanceActionId { transaction: only8s, proposal_procedure: 1 }, - Abstain), - Pair(GovernanceActionId { transaction: only9s, proposal_procedure: 0 }, - Abstain), - ]), + Pair( + DelegateRepresentative(VerificationKey(only0s)), + [ + Pair( + GovernanceActionId { transaction: only7s, proposal_procedure: 2 }, + Abstain, + ), + Pair( + GovernanceActionId { transaction: only8s, proposal_procedure: 1 }, + Abstain, + ), + Pair( + GovernanceActionId { transaction: only9s, proposal_procedure: 0 }, + Abstain, + ), + ], + ), ) == list.at(votes, 3) expect Some(Pair(StakePool(pool_id), [_, ..])) = list.at(votes, 4)