Do not add parens around exprs if they are not needed in formatting

This commit is contained in:
Chadtech 2021-10-16 13:30:32 -04:00
parent 8a4975ee8a
commit 2ca9dad156
3 changed files with 33 additions and 4 deletions

View file

@ -18,7 +18,7 @@ use roc_region::all::Located;
/// Just (Just a)
/// List (List a)
/// reverse (reverse l)
#[derive(PartialEq, Eq, Clone, Copy)]
#[derive(PartialEq, Eq, Clone, Copy, Debug)]
pub enum Parens {
NotNeeded,
InFunctionType,

View file

@ -133,10 +133,14 @@ impl<'a> Formattable<'a> for Expr<'a> {
}
}
ParensAround(sub_expr) => {
if parens == Parens::NotNeeded {
sub_expr.format_with_options(buf, Parens::NotNeeded, Newlines::Yes, indent);
} else {
buf.push('(');
sub_expr.format_with_options(buf, Parens::NotNeeded, Newlines::Yes, indent);
buf.push(')');
}
}
Str(literal) => {
use roc_parse::ast::StrLiteral::*;

View file

@ -362,6 +362,31 @@ mod test_fmt {
);
}
#[test]
fn excess_parens() {
expr_formats_to(
indoc!(
r#"
x = (5)
y = ((10))
42
"#
),
indoc!(
r#"
x = 5
y = 10
42
"#
),
);
}
// #[test]
// fn defs_with_defs() {
// expr_formats_to(