diff --git a/src/rules/if_else.rs b/src/rules/if_else.rs index 1dd15d7..37f0c75 100644 --- a/src/rules/if_else.rs +++ b/src/rules/if_else.rs @@ -41,6 +41,13 @@ pub fn rule( steps.push_back(crate::builder::Step::FormatWider( child.element, )); + } else if branch == "else" + && child.element.kind() == rnix::SyntaxKind::NODE_IF_ELSE + { + steps.push_back(crate::builder::Step::Whitespace); + steps.push_back(crate::builder::Step::FormatWider( + child.element, + )); } else { steps.push_back(crate::builder::Step::Indent); steps.push_back(crate::builder::Step::NewLine); diff --git a/tests/cases/if_else/in b/tests/cases/if_else/in index aa1bd21..db177d0 100644 --- a/tests/cases/if_else/in +++ b/tests/cases/if_else/in @@ -1,6 +1,8 @@ [ (if ./a then b else c) (if /**/ a /**/ then /**/ b /**/ else /**/ c) + (if if a then b else c then b else if a then b else if a then b else c) + (if if a then b else c then b else if a then b else /*x*/ if a then b else c) (if (if (if diff --git a/tests/cases/if_else/out b/tests/cases/if_else/out index 0408ec0..f72ccfc 100644 --- a/tests/cases/if_else/out +++ b/tests/cases/if_else/out @@ -17,6 +17,34 @@ /**/ c ) + ( + if + if a + then b + else c + then b + else if a + then b + else if a + then b + else c + ) + ( + if + if a + then b + else c + then b + else if a + then b + else + /* + x + */ + if a + then b + else c + ) ( if (