diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index 43a35930..6d1667e1 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -727,8 +727,7 @@ impl<'comments> Formatter<'comments> { .append(break_("", " ")) .append(join(patterns, break_(",", ", "))) .nest(INDENT) - .append(break_(",", "")) - .append(break_("", " ")) + .append(break_(",", " ")) .append(symbol) .append(self.case_clause_value(value)) } diff --git a/crates/aiken-lang/src/tests/format.rs b/crates/aiken-lang/src/tests/format.rs index a26eb58b..47206b58 100644 --- a/crates/aiken-lang/src/tests/format.rs +++ b/crates/aiken-lang/src/tests/format.rs @@ -473,6 +473,34 @@ fn format_newline_module_comments() { ); } +#[test] +fn format_many_assignment_patterns() { + assert_format!( + r#" + fn backpassing() -> Int { + + let + elem, accumulator, wow, + who, + thing, + what, + idk, + wee, + will, + it, + break, + + + + <- fold([1, 2, 3], + 0) + + elem + accumulator + } + "# + ); +} + #[test] fn format_bytearray_literals() { assert_format!( diff --git a/crates/aiken-lang/src/tests/snapshots/format_many_assignment_patterns.snap b/crates/aiken-lang/src/tests/snapshots/format_many_assignment_patterns.snap new file mode 100644 index 00000000..1b9439c7 --- /dev/null +++ b/crates/aiken-lang/src/tests/snapshots/format_many_assignment_patterns.snap @@ -0,0 +1,21 @@ +--- +source: crates/aiken-lang/src/tests/format.rs +description: "Code:\n\nfn backpassing() -> Int {\n\n let\n elem, accumulator, wow,\n who,\n thing,\n what,\n idk,\n wee,\n will,\n it,\n break,\n\n\n\n <- fold([1, 2, 3],\n 0)\n\n elem + accumulator\n}\n" +--- +fn backpassing() -> Int { + let + elem, + accumulator, + wow, + who, + thing, + what, + idk, + wee, + will, + it, + break, + <- fold([1, 2, 3], 0) + + elem + accumulator +} diff --git a/crates/aiken-lang/src/tipo/expr.rs b/crates/aiken-lang/src/tipo/expr.rs index 84292236..4b7c78ae 100644 --- a/crates/aiken-lang/src/tipo/expr.rs +++ b/crates/aiken-lang/src/tipo/expr.rs @@ -1894,8 +1894,7 @@ impl<'a, 'b> ExprTyper<'a, 'b> { .iter() .map(|ap| ap.pattern.location()) .reduce(|acc, loc| acc.union(loc)) - .unwrap_or(location) - .map_end(|current| current - 1), + .unwrap_or(location), }); } _ => prefix.push(expression),