diff --git a/src/alejandra_engine/src/builder.rs b/src/alejandra_engine/src/builder.rs index 5b56a27..7c6d9bd 100644 --- a/src/alejandra_engine/src/builder.rs +++ b/src/alejandra_engine/src/builder.rs @@ -21,45 +21,15 @@ pub(crate) struct BuildCtx { pub vertical: bool, } -impl BuildCtx { - pub fn new( - force_wide: bool, - path: String, - pos_old: crate::position::Position, - vertical: bool, - ) -> BuildCtx { - BuildCtx { - force_wide, - force_wide_success: true, - indentation: 0, - path, - pos_old, - vertical, - } - } -} - pub(crate) fn build( + build_ctx: &mut BuildCtx, element: rnix::SyntaxElement, - force_wide: bool, - path: String, - vertical: bool, ) -> Option { let mut builder = rowan::GreenNodeBuilder::new(); - let mut build_ctx = BuildCtx::new( - force_wide, - path, - crate::position::Position::default(), - vertical, - ); - build_step( - &mut builder, - &mut build_ctx, - &crate::builder::Step::Format(element), - ); + build_step(&mut builder, build_ctx, &crate::builder::Step::Format(element)); - if force_wide { + if build_ctx.force_wide { if build_ctx.force_wide_success { Some(builder.finish()) } else { None } } else { Some(builder.finish()) @@ -266,10 +236,17 @@ fn format_wider( } pub(crate) fn fits_in_single_line( - build_ctx: &crate::builder::BuildCtx, + build_ctx_old: &crate::builder::BuildCtx, element: rnix::SyntaxElement, ) -> bool { - build(element, true, build_ctx.path.clone(), false).is_some() + let mut build_ctx = crate::builder::BuildCtx { + force_wide: true, + force_wide_success: true, + vertical: false, + ..build_ctx_old.clone() + }; + + build(&mut build_ctx, element).is_some() } pub(crate) fn make_isolated_token( diff --git a/src/alejandra_engine/src/children2.rs b/src/alejandra_engine/src/children2.rs index 954335d..e3b9994 100644 --- a/src/alejandra_engine/src/children2.rs +++ b/src/alejandra_engine/src/children2.rs @@ -1,12 +1,10 @@ use std::collections::LinkedList; -#[derive(Debug)] pub(crate) enum Trivia { Comment(String), Newlines(usize), } -#[derive(Debug)] pub(crate) struct Child { pub element: rnix::SyntaxElement, diff --git a/src/alejandra_engine/src/format.rs b/src/alejandra_engine/src/format.rs index 594c15e..3b60143 100644 --- a/src/alejandra_engine/src/format.rs +++ b/src/alejandra_engine/src/format.rs @@ -19,7 +19,16 @@ pub fn in_memory(path: String, before: String) -> (Status, String) { return (Status::Error(errors[0].to_string()), before); } - let after = crate::builder::build(ast.node().into(), false, path, true) + let mut build_ctx = crate::builder::BuildCtx { + force_wide: false, + force_wide_success: true, + indentation: 0, + path, + pos_old: crate::position::Position::default(), + vertical: true, + }; + + let after = crate::builder::build(&mut build_ctx, ast.node().into()) .unwrap() .to_string(); diff --git a/src/alejandra_engine/src/parsers/pattern.rs b/src/alejandra_engine/src/parsers/pattern.rs index 53fea54..8e3cd0f 100644 --- a/src/alejandra_engine/src/parsers/pattern.rs +++ b/src/alejandra_engine/src/parsers/pattern.rs @@ -1,13 +1,13 @@ use std::collections::LinkedList; -#[derive(Debug, Default)] +#[derive(Default)] pub(crate) struct Argument { pub comments_before: LinkedList, pub item: Option, pub comment_after: Option, } -#[derive(Debug, Default)] +#[derive(Default)] pub(crate) struct Pattern { pub initial_at: Option, pub comments_after_initial_at: LinkedList, diff --git a/src/alejandra_engine/src/position.rs b/src/alejandra_engine/src/position.rs index df0e23c..827ede0 100644 --- a/src/alejandra_engine/src/position.rs +++ b/src/alejandra_engine/src/position.rs @@ -1,4 +1,4 @@ -#[derive(Clone, Debug)] +#[derive(Clone)] pub(crate) struct Position { pub column: usize, pub line: usize, diff --git a/src/alejandra_engine/src/rules/paren.rs b/src/alejandra_engine/src/rules/paren.rs index 9792a85..2341fbe 100644 --- a/src/alejandra_engine/src/rules/paren.rs +++ b/src/alejandra_engine/src/rules/paren.rs @@ -11,11 +11,28 @@ pub(crate) fn rule( let closer = children.next().unwrap(); let vertical = opener.has_inline_comment - || opener.has_trivialities + || opener.has_comments || expression.has_inline_comment - || expression.has_trivialities + || expression.has_comments || closer.has_inline_comment - || closer.has_trivialities; + || closer.has_comments + || matches!( + expression.element.kind(), + rnix::SyntaxKind::NODE_IF_ELSE | rnix::SyntaxKind::NODE_LET_IN + ) + || (matches!( + expression.element.kind(), + rnix::SyntaxKind::NODE_APPLY + | rnix::SyntaxKind::NODE_ASSERT + | rnix::SyntaxKind::NODE_BIN_OP + | rnix::SyntaxKind::NODE_OR_DEFAULT + | rnix::SyntaxKind::NODE_LAMBDA + | rnix::SyntaxKind::NODE_SELECT + | rnix::SyntaxKind::NODE_WITH + ) && second_through_penultimate_line_are_not_indented( + build_ctx, + expression.element.clone(), + )); // opener steps.push_back(crate::builder::Step::Format(opener.element)); @@ -77,3 +94,29 @@ pub(crate) fn rule( steps } + +fn second_through_penultimate_line_are_not_indented( + build_ctx: &crate::builder::BuildCtx, + element: rnix::SyntaxElement, +) -> bool { + let mut build_ctx = + crate::builder::BuildCtx { force_wide: false, ..build_ctx.clone() }; + + let formatted = + crate::builder::build(&mut build_ctx, element).unwrap().to_string(); + + let formatted_lines: Vec<&str> = formatted.split('\n').collect(); + + if formatted_lines.len() <= 2 { + return false; + } + + let whitespace = format!("{0:<1$}", "", 2 * (build_ctx.indentation + 1)); + + formatted_lines + .iter() + .skip(1) + .rev() + .skip(1) + .any(|line| !line.is_empty() && !line.starts_with(&whitespace)) +} diff --git a/src/alejandra_engine/tests/cases/apply/out b/src/alejandra_engine/tests/cases/apply/out index 3578271..9a786b8 100644 --- a/src/alejandra_engine/tests/cases/apply/out +++ b/src/alejandra_engine/tests/cases/apply/out @@ -1,10 +1,12 @@ (a b) (a b) -(a -/* - b - */ -c) +( + a + /* + b + */ + c +) ( /* a diff --git a/src/alejandra_engine/tests/cases/assert/out b/src/alejandra_engine/tests/cases/assert/out index a69be94..8d70c11 100644 --- a/src/alejandra_engine/tests/cases/assert/out +++ b/src/alejandra_engine/tests/cases/assert/out @@ -1,44 +1,56 @@ [ (assert b; e) - (assert b; - /* - d - */ - e) + ( + assert b; + /* + d + */ + e + ) (assert b; e) - (assert b; - /* - d - */ - e) - (assert - /* - a - */ - b; e) - (assert - /* - a - */ - b; - /* - d - */ - e) - (assert - /* - a - */ - b; e) - (assert - /* - a - */ - b; - /* - d - */ - e) + ( + assert b; + /* + d + */ + e + ) + ( + assert + /* + a + */ + b; e + ) + ( + assert + /* + a + */ + b; + /* + d + */ + e + ) + ( + assert + /* + a + */ + b; e + ) + ( + assert + /* + a + */ + b; + /* + d + */ + e + ) (assert b; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc) (assert b; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc) ] diff --git a/src/alejandra_engine/tests/cases/bin_op/out b/src/alejandra_engine/tests/cases/bin_op/out index f9b7725..5f698cd 100644 --- a/src/alejandra_engine/tests/cases/bin_op/out +++ b/src/alejandra_engine/tests/cases/bin_op/out @@ -1,49 +1,63 @@ [ (1 + 1) - (1 - + - /**/ - 1) - (1 - /**/ - + 1) - (1 - /**/ - + - /**/ - 1) - (1 - /**/ - + - /**/ - (1 - /**/ - + - /**/ - (1 - /**/ - + - /**/ - 1))) + ( + 1 + + + /**/ + 1 + ) + ( + 1 + /**/ + + 1 + ) + ( + 1 + /**/ + + + /**/ + 1 + ) + ( + 1 + /**/ + + + /**/ + ( + 1 + /**/ + + + /**/ + ( + 1 + /**/ + + + /**/ + 1 + ) + ) + ) (1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1) - (1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1 - + 1) + ( + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + + 1 + ) ] diff --git a/src/alejandra_engine/tests/cases/comment/out b/src/alejandra_engine/tests/cases/comment/out index ff9dd0e..68c5fa2 100644 --- a/src/alejandra_engine/tests/cases/comment/out +++ b/src/alejandra_engine/tests/cases/comment/out @@ -81,24 +81,28 @@ #7 } - (let - # 1 - #2 - a = 1; # 3 - b = 1; - c = 1; # 4 - #5 + ( + let + # 1 + #2 + a = 1; # 3 + b = 1; + c = 1; # 4 + #5 - #6 + #6 - d = 1; - #7 - in - d) + d = 1; + #7 + in + d + ) - ({ - a, # comment - b ? 2, # comment - }: - _) + ( + { + a, # comment + b ? 2, # comment + }: + _ + ) ] diff --git a/src/alejandra_engine/tests/cases/if_else/out b/src/alejandra_engine/tests/cases/if_else/out index 0ab6887..a0884b3 100644 --- a/src/alejandra_engine/tests/cases/if_else/out +++ b/src/alejandra_engine/tests/cases/if_else/out @@ -1,190 +1,286 @@ [ - (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 # test - a # test - then # test - b # test - else # test - c) - (if # test - /**/ - a # test - /**/ - then # test - b # test - /**/ - else # test - /**/ - c) - (if - if a + ( + 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 - then b - else if a - then b - else if a - then b - else c) - (if - if a + ) + ( + if + /**/ + a + /**/ + then + /**/ + b + /**/ + else + /**/ + c + ) + ( + if # test + a # test + then # test + b # test + else # test + c + ) + ( + if # test + /**/ + a # test + /**/ + then # test + b # test + /**/ + else # test + /**/ + c + ) + ( + if + if a + then b + else c + then b + else if a + then b + else if a then b else c - then b - else if a - then b - else - /* - x - */ - if a + ) + ( + if + if a + then b + else c + then b + else if a then b - else c) - (if - (if - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)) - then - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)) else - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c))) - then - (if - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)) + /* + x + */ + if a + then b + else c + ) + ( + if + ( + if + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + then + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + else + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + ) then - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)) + ( + if + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + then + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + else + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + ) else - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c))) - else - (if - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)) - then - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)) - else - (if - (if a - then b - else c) - then - (if a - then b - else c) - else - (if a - then b - else c)))) + ( + if + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + then + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + else + ( + if + ( + if a + then b + else c + ) + then + ( + if a + then b + else c + ) + else + ( + if a + then b + else c + ) + ) + ) + ) ] diff --git a/src/alejandra_engine/tests/cases/lambda/out b/src/alejandra_engine/tests/cases/lambda/out index 5849279..11e9e56 100644 --- a/src/alejandra_engine/tests/cases/lambda/out +++ b/src/alejandra_engine/tests/cases/lambda/out @@ -1,51 +1,61 @@ [ - (a: b: - /* - c - */ - d) - ({}: b: - /* - c - */ - d) - (a: {}: - /* - c - */ - d) + ( + a: b: + /* + c + */ + d + ) + ( + {}: b: + /* + c + */ + d + ) + ( + a: {}: + /* + c + */ + d + ) (a: d) - (a: - /* - c - */ - d) - (a - /* - b - */ - : - d) - (a - /* - b - */ - : - /* - c - */ - d) ( - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + a: + /* + c + */ + d ) ( - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + a + /* + b + */ + : + d + ) + ( + a + /* + b + */ + : + /* + c + */ + d + ) + (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) + (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) + ( + { + pkgs ? import ./.. {}, + locationsXml, + }: + null ) - ({ - pkgs ? import ./.. {}, - locationsXml, - }: - null) (a: b: c: {}: a: b: c: a) @@ -53,19 +63,23 @@ # Stuff }) - ({pkgs, ...}: let - in - pkgs) + ( + {pkgs, ...}: let + in + pkgs + ) (a: {b, ...}: c: { # Stuff }) - (a: { - b, - c, - ... - }: d: { - # Stuff - }) + ( + a: { + b, + c, + ... + }: d: { + # Stuff + } + ) ] diff --git a/src/alejandra_engine/tests/cases/or_default/out b/src/alejandra_engine/tests/cases/or_default/out index 9993f9e..78d27cb 100644 --- a/src/alejandra_engine/tests/cases/or_default/out +++ b/src/alejandra_engine/tests/cases/or_default/out @@ -1,48 +1,68 @@ [ (a.b or c) - (a.b - or - /**/ - c) - (a.b - /**/ - or c) - (a.b - /**/ - or - /**/ - c) - (a.b - /**/ - or - /**/ - (a.b - /**/ - or - /**/ - (a.b - /**/ - or - /**/ - c))) - (a.b - /**/ - or - /**/ - (a.b - /**/ - or - /**/ - (a.b - /**/ - or - /**/ - c))) + ( + a.b + or + /**/ + c + ) + ( + a.b + /**/ + or c + ) + ( + a.b + /**/ + or + /**/ + c + ) + ( + a.b + /**/ + or + /**/ + ( + a.b + /**/ + or + /**/ + ( + a.b + /**/ + or + /**/ + c + ) + ) + ) + ( + a.b + /**/ + or + /**/ + ( + a.b + /**/ + or + /**/ + ( + a.b + /**/ + or + /**/ + c + ) + ) + ) (a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a) - (a.a - or a.a # test - or a.a # test - or # test - a.a - or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a) + ( + a.a + or a.a # test + or a.a # test + or # test + a.a + or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a or a.a + ) ] diff --git a/src/alejandra_engine/tests/cases/pat_bind/out b/src/alejandra_engine/tests/cases/pat_bind/out index d4480db..ab77d04 100644 --- a/src/alejandra_engine/tests/cases/pat_bind/out +++ b/src/alejandra_engine/tests/cases/pat_bind/out @@ -1,33 +1,45 @@ [ ({} @ a: _) - ({} @ - /**/ - a: - _) - ({} - /**/ - @ a: - _) - ({} - /**/ - @ - /**/ - a: - _) + ( + {} @ + /**/ + a: + _ + ) + ( + {} + /**/ + @ a: + _ + ) + ( + {} + /**/ + @ + /**/ + a: + _ + ) (a @ {}: _) - (a @ - /**/ - {}: - _) - (a - /**/ - @ {}: - _) - (a - /**/ - @ - /**/ - {}: - _) + ( + a @ + /**/ + {}: + _ + ) + ( + a + /**/ + @ {}: + _ + ) + ( + a + /**/ + @ + /**/ + {}: + _ + ) ] diff --git a/src/alejandra_engine/tests/cases/pattern/out b/src/alejandra_engine/tests/cases/pattern/out index f83c3a5..8af4089 100644 --- a/src/alejandra_engine/tests/cases/pattern/out +++ b/src/alejandra_engine/tests/cases/pattern/out @@ -9,1055 +9,1199 @@ foo, bar, # Some comment }: {}) - (a @ { - self, - gomod2nix, - mach-nix, - }: - _) - ({ - self, - gomod2nix, - mach-nix, - } @ inp: - _) - ({ - a ? [ - 1 - 2 - 3 - ], - b ? { - # ... - }, - }: - _) + ( + a @ { + self, + gomod2nix, + mach-nix, + }: + _ + ) + ( + { + self, + gomod2nix, + mach-nix, + } @ inp: + _ + ) + ( + { + a ? [ + 1 + 2 + 3 + ], + b ? { + # ... + }, + }: + _ + ) ({}: _) ({a}: _) - ({ - /**/ - }: - _) + ( + { + /**/ + }: + _ + ) ({...}: _) - ({ - ... - /**/ - }: - _) - ({ - /**/ - ... - }: - _) - ({ - /**/ - ... - /**/ - }: - _) + ( + { + ... + /**/ + }: + _ + ) + ( + { + /**/ + ... + }: + _ + ) + ( + { + /**/ + ... + /**/ + }: + _ + ) - ({ - b, - e, - ... - }: - _) - ({ - b, - e, - ... - /* - h - */ - }: - _) - ({ - b, - e, - /* - g - */ - ... - }: - _) - ({ - b, - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - e, - /* - f - */ - ... - }: - _) - ({ - b, - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - b, - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - b, - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - d - */ - e, - ... - }: - _) - ({ - b, - /* - d - */ - e, - ... - /* - h - */ - }: - _) - ({ - b, - /* - d - */ - e, - /* - g - */ - ... - }: - _) - ({ - b, - /* - d - */ - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - d - */ - e, - /* - f - */ - ... - }: - _) - ({ - b, - /* - d - */ - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - b, - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - e, - ... - }: - _) - ({ - b, - /* - c - */ - e, - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - e, - /* - g - */ - ... - }: - _) - ({ - b, - /* - c - */ - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - e, - /* - f - */ - ... - }: - _) - ({ - b, - /* - c - */ - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - b, - /* - c - */ - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - ... - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - /* - g - */ - ... - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - ... - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - e, - ... - }: - _) - ({ - /* - a - */ - b, - e, - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - e, - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - e, - /* - f - */ - ... - }: - _) - ({ - /* - a - */ - b, - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - ... - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - /* - f - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - /* - f - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - /* - g - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - ... - /* - h - */ - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - }: - _) - ({ - /* - a - */ - b, - /* - c - */ - /* - d - */ - e, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) + ( + { + b, + e, + ... + }: + _ + ) + ( + { + b, + e, + ... + /* + h + */ + }: + _ + ) + ( + { + b, + e, + /* + g + */ + ... + }: + _ + ) + ( + { + b, + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + e, + /* + f + */ + ... + }: + _ + ) + ( + { + b, + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + b, + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + d + */ + e, + ... + }: + _ + ) + ( + { + b, + /* + d + */ + e, + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + d + */ + e, + /* + g + */ + ... + }: + _ + ) + ( + { + b, + /* + d + */ + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + d + */ + e, + /* + f + */ + ... + }: + _ + ) + ( + { + b, + /* + d + */ + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + b, + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + e, + ... + }: + _ + ) + ( + { + b, + /* + c + */ + e, + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + e, + /* + g + */ + ... + }: + _ + ) + ( + { + b, + /* + c + */ + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + e, + /* + f + */ + ... + }: + _ + ) + ( + { + b, + /* + c + */ + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + b, + /* + c + */ + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + ... + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + /* + g + */ + ... + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + ... + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + e, + ... + }: + _ + ) + ( + { + /* + a + */ + b, + e, + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + e, + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + e, + /* + f + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + /* + f + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + /* + f + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + /* + g + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + ... + /* + h + */ + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + }: + _ + ) + ( + { + /* + a + */ + b, + /* + c + */ + /* + d + */ + e, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) ({a ? null}: _) - ({ - /* - a - */ - b - /* - a - */ - ? - /* - a - */ - null, - /* - c - */ - /* - d - */ - e - /* - a - */ - ? - /* - a - */ - null, - /* - f - */ - /* - g - */ - ... - /* - h - */ - }: - _) + ( + { + /* + a + */ + b + /* + a + */ + ? + /* + a + */ + null, + /* + c + */ + /* + d + */ + e + /* + a + */ + ? + /* + a + */ + null, + /* + f + */ + /* + g + */ + ... + /* + h + */ + }: + _ + ) ( { diff --git a/src/alejandra_engine/tests/cases/select/out b/src/alejandra_engine/tests/cases/select/out index 0769042..865e8be 100644 --- a/src/alejandra_engine/tests/cases/select/out +++ b/src/alejandra_engine/tests/cases/select/out @@ -1,55 +1,63 @@ [ (a.a) - (a - . - /**/ - a) - (a - /**/ - .a) - (a - /**/ - . - /**/ - a) + ( + a + . + /**/ + a + ) + ( + a + /**/ + .a + ) + ( + a + /**/ + . + /**/ + a + ) (a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a) - (a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a - .a) + ( + a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + .a + ) ] diff --git a/src/alejandra_engine/tests/cases/with/out b/src/alejandra_engine/tests/cases/with/out index b28219c..3551b21 100644 --- a/src/alejandra_engine/tests/cases/with/out +++ b/src/alejandra_engine/tests/cases/with/out @@ -1,24 +1,30 @@ [ (with b; c) - (with b; - /* - b - */ - c) - (with - /* - a - */ - b; c) - (with - /* - a - */ - b; - /* - b - */ - c) + ( + with b; + /* + b + */ + c + ) + ( + with + /* + a + */ + b; c + ) + ( + with + /* + a + */ + b; + /* + b + */ + c + ) (with b; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc) (with b; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc) {a = with b; 1;} @@ -41,21 +47,25 @@ # comment } (with a; with b; with c; {a = 1;}) - (with a; - with b; - with c; { - a = 1; - b = 2; - }) - (with a; - /* - comment - */ - with b; - with c; { - a = 1; - b = 2; - }) + ( + with a; + with b; + with c; { + a = 1; + b = 2; + } + ) + ( + with a; + /* + comment + */ + with b; + with c; { + a = 1; + b = 2; + } + ) { a = with b; with b; with b; 1; }