Fix 'Pair' formatter inside forced unbroken components.

This commit is contained in:
KtorZ
2024-08-13 17:05:41 +02:00
parent 7501538053
commit 5067aad0d8
6 changed files with 107 additions and 34 deletions

View File

@@ -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();

View File

@@ -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
}
"#
);
}

View File

@@ -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
}