From f74989b2b891c3375e97795293f17731ef6b2499 Mon Sep 17 00:00:00 2001 From: Chris O'Brien Date: Wed, 17 Aug 2022 11:19:04 -0500 Subject: [PATCH 1/4] add formatting for if_else blocks --- sway-fmt-v2/src/utils/expr/conditional.rs | 29 ++++++++++++++++------- sway-fmt-v2/src/utils/expr/tests.rs | 4 ++++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/sway-fmt-v2/src/utils/expr/conditional.rs b/sway-fmt-v2/src/utils/expr/conditional.rs index ae1566f3f3b..caabdd787ca 100644 --- a/sway-fmt-v2/src/utils/expr/conditional.rs +++ b/sway-fmt-v2/src/utils/expr/conditional.rs @@ -20,10 +20,13 @@ impl Format for IfExpr { Self::open_curly_brace(formatted_code, formatter)?; self.then_block.get().format(formatted_code, formatter)?; Self::close_curly_brace(formatted_code, formatter)?; - if let Some(else_opt) = &self.else_opt { - write!(formatted_code, "{} ", else_opt.0.span().as_str())?; - match &else_opt.1 { - ControlFlow::Continue(if_expr) => if_expr.format(formatted_code, formatter)?, + if let Some((else_token, control_flow)) = &self.else_opt { + write!(formatted_code, " {}", else_token.span().as_str())?; + match &control_flow { + ControlFlow::Continue(if_expr) => { + write!(formatted_code, " ")?; + if_expr.format(formatted_code, formatter)? + } ControlFlow::Break(code_block_contents) => { Self::open_curly_brace(formatted_code, formatter)?; code_block_contents @@ -41,16 +44,24 @@ impl Format for IfExpr { impl CurlyBrace for IfExpr { fn open_curly_brace( line: &mut FormattedCode, - _formatter: &mut Formatter, + formatter: &mut Formatter, ) -> Result<(), FormatterError> { - write!(line, "{}", Delimiter::Brace.as_open_char())?; + formatter.shape.block_indent(&formatter.config); + writeln!(line, " {}", Delimiter::Brace.as_open_char())?; + Ok(()) } fn close_curly_brace( line: &mut FormattedCode, - _formatter: &mut Formatter, + formatter: &mut Formatter, ) -> Result<(), FormatterError> { - write!(line, "{}", Delimiter::Brace.as_close_char())?; + formatter.shape.block_unindent(&formatter.config); + write!( + line, + "{}{}", + formatter.shape.indent.to_string(&formatter.config)?, + Delimiter::Brace.as_close_char() + )?; Ok(()) } } @@ -71,7 +82,7 @@ impl Format for IfCondition { eq_token, rhs, } => { - write!(formatted_code, "{} ", let_token.span().as_str())?; + write!(formatted_code, " {} ", let_token.span().as_str())?; lhs.format(formatted_code, formatter)?; write!(formatted_code, " {} ", eq_token.span().as_str())?; rhs.format(formatted_code, formatter)?; diff --git a/sway-fmt-v2/src/utils/expr/tests.rs b/sway-fmt-v2/src/utils/expr/tests.rs index 1e90ca4da37..787b666044c 100644 --- a/sway-fmt-v2/src/utils/expr/tests.rs +++ b/sway-fmt-v2/src/utils/expr/tests.rs @@ -115,3 +115,7 @@ fmt_test!( multiline_tuple "(\n \"reallyreallylongstring\",\n \"yetanothe fmt_test!( multiline_match_stmt "match foo {\n Foo::foo => {}\n Foo::bar => {}\n}", intermediate_whitespace "match foo {\n Foo::foo => {}\n Foo::bar => {}\n}" ); + +fmt_test!( if_else_block "if foo {\n foo();\n} else if bar {\n bar();\n} else {\n baz();\n}", + intermediate_whitespace "if foo {\n foo();\n} else if bar {\n bar();\n} else {\n baz();\n}" +); From 2e52c2d696d0313ff5401a46c7b45f42fded850c Mon Sep 17 00:00:00 2001 From: Chris O'Brien Date: Wed, 17 Aug 2022 11:26:08 -0500 Subject: [PATCH 2/4] fmt --- sway-fmt-v2/src/utils/expr/conditional.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/sway-fmt-v2/src/utils/expr/conditional.rs b/sway-fmt-v2/src/utils/expr/conditional.rs index caabdd787ca..f0556af951b 100644 --- a/sway-fmt-v2/src/utils/expr/conditional.rs +++ b/sway-fmt-v2/src/utils/expr/conditional.rs @@ -62,6 +62,7 @@ impl CurlyBrace for IfExpr { formatter.shape.indent.to_string(&formatter.config)?, Delimiter::Brace.as_close_char() )?; + Ok(()) } } From 44a5508e1524b19dee0119581e9f273810dadb6d Mon Sep 17 00:00:00 2001 From: Chris O'Brien Date: Wed, 17 Aug 2022 18:53:01 -0500 Subject: [PATCH 3/4] if else tests pass --- sway-fmt-v2/src/utils/expr/conditional.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-fmt-v2/src/utils/expr/conditional.rs b/sway-fmt-v2/src/utils/expr/conditional.rs index d6dbe6cf8b2..1fb99714d23 100644 --- a/sway-fmt-v2/src/utils/expr/conditional.rs +++ b/sway-fmt-v2/src/utils/expr/conditional.rs @@ -47,7 +47,7 @@ impl CurlyBrace for IfExpr { formatter: &mut Formatter, ) -> Result<(), FormatterError> { formatter.shape.block_indent(&formatter.config); - writeln!(line, " {}", Delimiter::Brace.as_open_char())?; + write!(line, " {}", Delimiter::Brace.as_open_char())?; Ok(()) } From cea143fbd260e79c1ae75e2efd168e928fd81b48 Mon Sep 17 00:00:00 2001 From: Chris O'Brien Date: Wed, 17 Aug 2022 18:54:38 -0500 Subject: [PATCH 4/4] complete intermediate_whitespace test --- sway-fmt-v2/src/utils/expr/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-fmt-v2/src/utils/expr/tests.rs b/sway-fmt-v2/src/utils/expr/tests.rs index 3c22fd62270..49fb41dbd5c 100644 --- a/sway-fmt-v2/src/utils/expr/tests.rs +++ b/sway-fmt-v2/src/utils/expr/tests.rs @@ -117,7 +117,7 @@ fmt_test!( multiline_match_stmt "match foo {\n Foo::foo => {}\n Foo::bar ); fmt_test!( if_else_block "if foo {\n foo();\n} else if bar {\n bar();\n} else {\n baz();\n}", - intermediate_whitespace "if foo {\n foo();\n} else if bar {\n bar();\n} else {\n baz();\n}" + intermediate_whitespace " if foo { \n foo( ) ; \n } else if bar { \n bar( ) ; \n } else { \n baz(\n) ; \n }\n\n" ); fmt_test!( match_branch_kind