mirror of
https://github.com/roc-lang/roc.git
synced 2025-11-03 06:02:54 +00:00
Fix pnc apply in unary negate
This commit is contained in:
parent
05033ac40b
commit
2bd03ef16b
5 changed files with 46 additions and 6 deletions
|
|
@ -262,11 +262,8 @@ fn format_expr_only(
|
||||||
|
|
||||||
let before_all_newlines = lifted.before.iter().all(|s| s.is_newline());
|
let before_all_newlines = lifted.before.iter().all(|s| s.is_newline());
|
||||||
|
|
||||||
let needs_newline = !before_all_newlines
|
let needs_newline =
|
||||||
|| match &lifted.item {
|
!before_all_newlines || term_starts_with_multiline_str(&lifted.item);
|
||||||
Expr::Str(text) => is_str_multiline(text),
|
|
||||||
_ => false,
|
|
||||||
};
|
|
||||||
|
|
||||||
let needs_parens = (needs_newline
|
let needs_parens = (needs_newline
|
||||||
&& matches!(unary_op.value, called_via::UnaryOp::Negate))
|
&& matches!(unary_op.value, called_via::UnaryOp::Negate))
|
||||||
|
|
@ -369,6 +366,14 @@ fn format_expr_only(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn term_starts_with_multiline_str(expr: &Expr<'_>) -> bool {
|
||||||
|
match expr {
|
||||||
|
Expr::Str(text) => is_str_multiline(text),
|
||||||
|
Expr::PncApply(inner, _) => term_starts_with_multiline_str(&inner.value),
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn prepare_expr_field_collection<'a>(
|
fn prepare_expr_field_collection<'a>(
|
||||||
arena: &'a Bump,
|
arena: &'a Bump,
|
||||||
items: Collection<'a, Loc<AssignedField<'a, Expr<'a>>>>,
|
items: Collection<'a, Loc<AssignedField<'a, Expr<'a>>>>,
|
||||||
|
|
@ -635,7 +640,9 @@ fn requires_space_after_unary(item: &Expr<'_>) -> bool {
|
||||||
Expr::RecordAccess(inner, _field) | Expr::TupleAccess(inner, _field) => {
|
Expr::RecordAccess(inner, _field) | Expr::TupleAccess(inner, _field) => {
|
||||||
requires_space_after_unary(inner)
|
requires_space_after_unary(inner)
|
||||||
}
|
}
|
||||||
Expr::Apply(inner, _, _) => requires_space_after_unary(&inner.value),
|
Expr::Apply(inner, _, _) | Expr::PncApply(inner, _) => {
|
||||||
|
requires_space_after_unary(&inner.value)
|
||||||
|
}
|
||||||
Expr::TrySuffix(expr) => requires_space_after_unary(expr),
|
Expr::TrySuffix(expr) => requires_space_after_unary(expr),
|
||||||
Expr::SpaceAfter(inner, _) | Expr::SpaceBefore(inner, _) => {
|
Expr::SpaceAfter(inner, _) | Expr::SpaceBefore(inner, _) => {
|
||||||
requires_space_after_unary(inner)
|
requires_space_after_unary(inner)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
""
|
||||||
|
-(
|
||||||
|
"""
|
||||||
|
"""()
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
@0-12 SpaceAfter(
|
||||||
|
Apply(
|
||||||
|
@0-2 Str(
|
||||||
|
PlainLine(
|
||||||
|
"",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
[
|
||||||
|
@3-12 UnaryOp(
|
||||||
|
@4-12 PncApply(
|
||||||
|
@4-10 Str(
|
||||||
|
Block(
|
||||||
|
[],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
[],
|
||||||
|
),
|
||||||
|
@3-4 Negate,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
Space,
|
||||||
|
),
|
||||||
|
[
|
||||||
|
Newline,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
"" -""""""()
|
||||||
|
|
@ -691,6 +691,7 @@ mod test_snapshots {
|
||||||
pass/stmt_parens_minus.expr,
|
pass/stmt_parens_minus.expr,
|
||||||
pass/stmts_in_empty_record_assignment.expr,
|
pass/stmts_in_empty_record_assignment.expr,
|
||||||
pass/str_block_multiple_newlines.expr,
|
pass/str_block_multiple_newlines.expr,
|
||||||
|
pass/str_minus_pnc_call_multiline_str.expr,
|
||||||
pass/string_without_escape.expr,
|
pass/string_without_escape.expr,
|
||||||
pass/sub_var_with_spaces.expr,
|
pass/sub_var_with_spaces.expr,
|
||||||
pass/sub_with_spaces.expr,
|
pass/sub_with_spaces.expr,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue