Fix formatting of multi-line alternative patterns.
This commit is contained in:
parent
8db4a60986
commit
b6d99142f9
|
@ -8,8 +8,9 @@
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **aiken-lang**: Fix underflow in error message reported by the validator arity. See [#1013](https://github.com/aiken-lang/aiken/issues/1013) @KtorZ.
|
- **aiken-lang**: Fix underflow in error message reported by the validator arity. See [#1013](https://github.com/aiken-lang/aiken/issues/1013) @KtorZ
|
||||||
- **aiken-lang**: Fix list-pattern needlessly formatting over multiple lines. @KtorZ
|
- **aiken-lang**: Fix list-pattern needlessly formatting over multiple lines. @KtorZ
|
||||||
|
- **aiken-lang**: Fix formatter on long alternative patterns spanning over multiple lines. @KtorZ
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
|
|
@ -1906,8 +1906,9 @@ impl<'comments> Formatter<'comments> {
|
||||||
let space_before = self.pop_empty_lines(clause.location.start);
|
let space_before = self.pop_empty_lines(clause.location.start);
|
||||||
let clause_doc = join(
|
let clause_doc = join(
|
||||||
clause.patterns.iter().map(|p| self.pattern(p)),
|
clause.patterns.iter().map(|p| self.pattern(p)),
|
||||||
" | ".to_doc(),
|
break_(" | ", " | "),
|
||||||
);
|
)
|
||||||
|
.group();
|
||||||
|
|
||||||
if index == 0 {
|
if index == 0 {
|
||||||
clause_doc
|
clause_doc
|
||||||
|
|
|
@ -1249,17 +1249,48 @@ fn format_validator_exhaustive_handlers_extra_non_default_fallback() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn list_pattern() {
|
fn single_line_alternative_patterns() {
|
||||||
assert_format!(
|
assert_format!(
|
||||||
r#"
|
r#"
|
||||||
fn foo() {
|
fn foo() {
|
||||||
when xs is {
|
when bar is {
|
||||||
[_] -> True
|
a | b | c -> True
|
||||||
[1, 2] -> False
|
d | e -> {
|
||||||
[_, x] -> {
|
let x = e + d
|
||||||
let y = x
|
x > 10
|
||||||
y == 42
|
|
||||||
}
|
}
|
||||||
|
_ -> False
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn multiline_alternative_patterns() {
|
||||||
|
assert_format!(
|
||||||
|
r#"
|
||||||
|
validator direct_proxy {
|
||||||
|
mint(_redeemer: Void, policy_id: PolicyId, self: Transaction) {
|
||||||
|
list.any(
|
||||||
|
self.certificates,
|
||||||
|
fn(certificate) {
|
||||||
|
when certificate is {
|
||||||
|
RegisterDelegateRepresentative {
|
||||||
|
delegate_representative: credential,
|
||||||
|
..
|
||||||
|
} | UnregisterDelegateRepresentative {
|
||||||
|
delegate_representative: credential,
|
||||||
|
..
|
||||||
|
} | RegisterCredential { credential, .. } | UnregisterCredential {
|
||||||
|
credential,
|
||||||
|
..
|
||||||
|
} | RegisterAndDelegateCredential { credential, .. } ->
|
||||||
|
credential == Script(policy_id)
|
||||||
|
_ -> False
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"#
|
"#
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
---
|
||||||
|
source: crates/aiken-lang/src/tests/format.rs
|
||||||
|
description: "Code:\n\nvalidator direct_proxy {\n mint(_redeemer: Void, policy_id: PolicyId, self: Transaction) {\n list.any(\n self.certificates,\n fn(certificate) {\n when certificate is {\n RegisterDelegateRepresentative {\n delegate_representative: credential,\n ..\n } | UnregisterDelegateRepresentative {\n delegate_representative: credential,\n ..\n } | RegisterCredential { credential, .. } | UnregisterCredential {\n credential,\n ..\n } | RegisterAndDelegateCredential { credential, .. } ->\n credential == Script(policy_id)\n _ -> False\n }\n },\n )\n }\n}\n"
|
||||||
|
---
|
||||||
|
validator direct_proxy {
|
||||||
|
mint(_redeemer: Void, policy_id: PolicyId, self: Transaction) {
|
||||||
|
list.any(
|
||||||
|
self.certificates,
|
||||||
|
fn(certificate) {
|
||||||
|
when certificate is {
|
||||||
|
RegisterDelegateRepresentative {
|
||||||
|
delegate_representative: credential,
|
||||||
|
..
|
||||||
|
} |
|
||||||
|
UnregisterDelegateRepresentative {
|
||||||
|
delegate_representative: credential,
|
||||||
|
..
|
||||||
|
} |
|
||||||
|
RegisterCredential { credential, .. } |
|
||||||
|
UnregisterCredential { credential, .. } |
|
||||||
|
RegisterAndDelegateCredential { credential, .. } ->
|
||||||
|
credential == Script(policy_id)
|
||||||
|
_ -> False
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
else(_) {
|
||||||
|
fail
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
---
|
||||||
|
source: crates/aiken-lang/src/tests/format.rs
|
||||||
|
description: "Code:\n\nfn foo() {\n when bar is {\n a | b | c -> True\n d | e -> {\n let x = e + d\n x > 10\n }\n _ -> False\n }\n}\n"
|
||||||
|
---
|
||||||
|
fn foo() {
|
||||||
|
when bar is {
|
||||||
|
a | b | c -> True
|
||||||
|
d | e -> {
|
||||||
|
let x = e + d
|
||||||
|
x > 10
|
||||||
|
}
|
||||||
|
_ -> False
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue