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#"