Skip to content
This repository has been archived by the owner on Aug 31, 2023. It is now read-only.

Commit

Permalink
chore: rebase and refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ematipico committed May 23, 2022
1 parent 69170fc commit 34e74dd
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 34 deletions.
24 changes: 4 additions & 20 deletions crates/rome_js_formatter/src/js/statements/do_while_statement.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use crate::prelude::*;

use crate::FormatNodeFields;
use rome_js_syntax::JsDoWhileStatement;
use rome_js_syntax::JsDoWhileStatementFields;
use rome_js_syntax::{JsAnyStatement, JsDoWhileStatement};

impl FormatNodeFields<JsDoWhileStatement> for FormatNodeRule<JsDoWhileStatement> {
fn format_fields(
Expand Down Expand Up @@ -39,27 +39,11 @@ impl FormatNodeFields<JsDoWhileStatement> for FormatNodeRule<JsDoWhileStatement>
]
]?;

formatted![formatter, [head, body.format(), tail,]]
let body = body?;
if matches!(body, JsAnyStatement::JsBlockStatement(_)) {
Ok(hard_group_elements(format_elements![
head,
space_token(),
body.format(formatter)?,
tail,
]))
} else if matches!(body, JsAnyStatement::JsEmptyStatement(_)) {
Ok(format_elements![
hard_group_elements(format_elements![head, body.format(formatter)?,]),
hard_line_break(),
tail,
])
if matches!(body, JsAnyStatement::JsEmptyStatement(_)) {
formatted![formatter, [head, body.format(), hard_line_break(), tail,]]
} else {
Ok(format_elements![
hard_group_elements(format_elements![head, space_token()]),
body.format(formatter)?,
hard_group_elements(tail),
])
formatted![formatter, [head, space_token(), body.format(), tail,]]
}
}
}
8 changes: 3 additions & 5 deletions crates/rome_js_formatter/src/js/statements/empty_statement.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use crate::prelude::*;

use crate::FormatNodeFields;
use rome_js_syntax::JsEmptyStatement;
use rome_js_syntax::JsEmptyStatementFields;
use rome_js_syntax::{JsEmptyStatement, JsSyntaxKind};
use rome_js_syntax::{JsEmptyStatement, JsEmptyStatementFields, JsSyntaxKind};
use rome_rowan::AstNode;

impl FormatNodeFields<JsEmptyStatement> for FormatNodeRule<JsEmptyStatement> {
Expand All @@ -12,14 +10,14 @@ impl FormatNodeFields<JsEmptyStatement> for FormatNodeRule<JsEmptyStatement> {
formatter: &Formatter<JsFormatOptions>,
) -> FormatResult<FormatElement> {
let JsEmptyStatementFields { semicolon_token } = node.as_fields();
let parent_kind = self.syntax().parent().map(|p| p.kind());
let parent_kind = node.syntax().parent().map(|p| p.kind());
if matches!(
parent_kind,
Some(JsSyntaxKind::JS_DO_WHILE_STATEMENT)
| Some(JsSyntaxKind::JS_IF_STATEMENT)
| Some(JsSyntaxKind::JS_ELSE_CLAUSE)
) {
semicolon_token.format(formatter)
formatted![formatter, [semicolon_token.format()]]
} else {
Ok(formatter.format_replaced(&semicolon_token?, empty_element()))
}
Expand Down
20 changes: 11 additions & 9 deletions crates/rome_js_formatter/src/js/statements/if_statement.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ fn format_if_element(
)
.soft_block_indent()
.finish()?,
space_token(),
into_block(formatter, consequent?)?,
]
]?;
Expand All @@ -88,22 +87,25 @@ fn into_block(
formatter: &Formatter<JsFormatOptions>,
stmt: JsAnyStatement,
) -> FormatResult<FormatElement> {
let formatted_statement = stmt.format();

if matches!(stmt, JsAnyStatement::JsBlockStatement(_)) {
return Ok(format_elements![space_token(), stmt.format(formatter)?]);
return formatted![formatter, [space_token(), formatted_statement]];
}

// If the body is an empty statement, force a line break to ensure behavior
// is coherent with `is_non_collapsable_empty_block`
if matches!(stmt, JsAnyStatement::JsEmptyStatement(_)) {
return Ok(format_elements![stmt.format(formatter)?, hard_line_break()]);
return formatted![formatter, [formatted_statement, hard_line_break()]];
}

Ok(format_elements![
space_token(),
group_elements(format_elements![
formatted![
formatter,
[
space_token(),
token("{"),
block_indent(stmt.format(formatter)?),
block_indent(formatted![formatter, [stmt.format()]]?),
token("}"),
])
])
]
]
}

0 comments on commit 34e74dd

Please sign in to comment.