diff --git a/src/alejandra_engine/src/rules/if_else.rs b/src/alejandra_engine/src/rules/if_else.rs index d711aa9..87ac36c 100644 --- a/src/alejandra_engine/src/rules/if_else.rs +++ b/src/alejandra_engine/src/rules/if_else.rs @@ -64,7 +64,14 @@ pub fn rule( if if_else.comments_before_then_expr.is_empty() { // expr let element = if_else.then_expr.unwrap(); - if crate::builder::fits_in_single_line(build_ctx, element.clone()) { + if matches!( + element.kind(), + rnix::SyntaxKind::NODE_ATTR_SET + | rnix::SyntaxKind::NODE_LET_IN + | rnix::SyntaxKind::NODE_LIST + | rnix::SyntaxKind::NODE_STRING + ) || crate::builder::fits_in_single_line(build_ctx, element.clone()) + { steps.push_back(crate::builder::Step::Whitespace); steps.push_back(crate::builder::Step::FormatWider(element)); } else { @@ -113,8 +120,14 @@ pub fn rule( if if_else.comments_before_else_expr.is_empty() { // expr let element = if_else.else_expr.unwrap(); - if matches!(element.kind(), rnix::SyntaxKind::NODE_IF_ELSE) - || crate::builder::fits_in_single_line(build_ctx, element.clone()) + if matches!( + element.kind(), + rnix::SyntaxKind::NODE_ATTR_SET + | rnix::SyntaxKind::NODE_IF_ELSE + | rnix::SyntaxKind::NODE_LET_IN + | rnix::SyntaxKind::NODE_LIST + | rnix::SyntaxKind::NODE_STRING + ) || crate::builder::fits_in_single_line(build_ctx, element.clone()) { steps.push_back(crate::builder::Step::Whitespace); steps.push_back(crate::builder::Step::FormatWider(element)); diff --git a/src/alejandra_engine/tests/cases/if_else/in b/src/alejandra_engine/tests/cases/if_else/in index db177d0..4918f05 100644 --- a/src/alejandra_engine/tests/cases/if_else/in +++ b/src/alejandra_engine/tests/cases/if_else/in @@ -1,4 +1,18 @@ [ + (if true + then { + version = "1.2.3"; + } + else { + version = "3.2.1"; + }) + (if true + then '' + some text + '' + else '' + other text + '') (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) diff --git a/src/alejandra_engine/tests/cases/if_else/out b/src/alejandra_engine/tests/cases/if_else/out index 2e2d1fb..772ce5c 100644 --- a/src/alejandra_engine/tests/cases/if_else/out +++ b/src/alejandra_engine/tests/cases/if_else/out @@ -1,4 +1,18 @@ [ + (if true + then { + version = "1.2.3"; + } + else { + version = "3.2.1"; + }) + (if true + then '' + some text + '' + else '' + other text + '') (if ./a then b else c)