diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs
index 0145ff9e..7d485c57 100644
--- a/crates/aiken-lang/src/format.rs
+++ b/crates/aiken-lang/src/format.rs
@@ -905,9 +905,9 @@ impl<'comments> Formatter<'comments> {
let if_branches = self
.if_branch(break_("if", "if "), branches.first())
.append(join(
- branches[1..]
- .iter()
- .map(|branch| self.if_branch("else if".to_doc(), branch)),
+ branches[1..].iter().map(|branch| {
+ self.if_branch(line().append(break_("} else if", "} else if ")), branch)
+ }),
nil(),
));
diff --git a/crates/aiken-lang/src/tests/format.rs b/crates/aiken-lang/src/tests/format.rs
index 1dce2d41..ad8e4637 100644
--- a/crates/aiken-lang/src/tests/format.rs
+++ b/crates/aiken-lang/src/tests/format.rs
@@ -173,6 +173,23 @@ fn test_format_nested_when() {
assert_fmt(src, expected)
}
+#[test]
+fn test_format_else_if() {
+ let src = indoc! {r#"
+ pub fn foo(xs: List, n: Int) -> List {
+ if n <= 0 {
+ xs
+ } else if n <= 10 {
+ xs
+ } else {
+ xs
+ }
+ }
+ "#};
+
+ assert_fmt(src, src)
+}
+
#[test]
fn test_format_imports() {
let src = indoc! {r#"