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

Commit

Permalink
fix(rome_js_analyze): make useBlockStatement fixed code a little nice…
Browse files Browse the repository at this point in the history
…r. (#2808)
  • Loading branch information
IWANABETHATGUY committed Jul 4, 2022
1 parent 957bb33 commit 65512e7
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 27 deletions.
29 changes: 18 additions & 11 deletions crates/rome_js_analyze/src/analyzers/use_block_statements.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
use std::iter;

use rome_analyze::context::RuleContext;
use rome_analyze::{
declare_rule, ActionCategory, Ast, Rule, RuleAction, RuleCategory, RuleDiagnostic,
};
use rome_console::markup;
use rome_diagnostics::Applicability;
use rome_js_factory::make;
use rome_js_syntax::{JsAnyStatement, JsElseClauseFields, JsIfStatementFields, T};
use rome_js_syntax::{JsAnyStatement, JsElseClauseFields, JsIfStatementFields, TriviaPieceKind, T};

use rome_rowan::{AstNode, AstNodeExt};

Expand Down Expand Up @@ -146,9 +148,11 @@ impl Rule for UseBlockStatements {
UseBlockStatementsOperationType::Wrap(stmt) => root.replace_node(
stmt.clone(),
JsAnyStatement::JsBlockStatement(make::js_block_statement(
make::token(T!['{']),
make::js_statement_list(std::iter::once(stmt.clone())),
make::token(T!['}']),
make::token(T!['{'])
.with_trailing_trivia(iter::once((TriviaPieceKind::Whitespace, " "))),
make::js_statement_list(iter::once(stmt.clone())),
make::token(T!['}'])
.with_leading_trivia(iter::once((TriviaPieceKind::Whitespace, " "))),
)),
)?,
UseBlockStatementsOperationType::ReplaceBody => match node {
Expand Down Expand Up @@ -206,13 +210,16 @@ macro_rules! use_block_statements_replace_body {
($stmt_type:ident, $root:ident, $node:ident, $stmt:ident) => {{
$root.replace_node(
$node.clone(),
JsAnyStatement::$stmt_type($stmt.clone().with_body(JsAnyStatement::JsBlockStatement(
make::js_block_statement(
make::token(T!['{']),
make::js_statement_list([]),
make::token(T!['}']),
),
))),
JsAnyStatement::$stmt_type(
$stmt.clone().with_body(JsAnyStatement::JsBlockStatement(
make::js_block_statement(
make::token(T!['{'])
.with_leading_trivia(iter::once((TriviaPieceKind::Whitespace, " "))),
make::js_statement_list([]),
make::token(T!['}']),
),
)),
),
)?
}};
}
16 changes: 8 additions & 8 deletions crates/rome_js_analyze/tests/specs/useBlockStatements.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
| @@ -1,5 +1,5 @@
0 0 | // invalid
1 | - if (x) x;
1 | + if (x) {x;}
1 | + if (x) { x; }
2 2 | if (x) {
3 3 | x;
4 4 | } else y;
Expand All @@ -57,7 +57,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
2 2 | if (x) {
3 3 | x;
4 | - } else y;
4 | + } else {y;}
4 | + } else { y; }
5 5 | if (x) {
6 6 | x;
7 7 | } else if (y) y;
Expand All @@ -78,7 +78,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
5 5 | if (x) {
6 6 | x;
7 | - } else if (y) y;
7 | + } else if (y) {y;}
7 | + } else if (y) { y; }
8 8 | for (;;);
9 9 | for (p in obj);
10 10 | for (x of xs);
Expand All @@ -99,7 +99,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
6 6 | x;
7 7 | } else if (y) y;
8 | - for (;;);
8 | + for (;;){}
8 | + for (;;) {}
9 9 | for (p in obj);
10 10 | for (x of xs);
11 11 | do;
Expand All @@ -120,7 +120,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
7 7 | } else if (y) y;
8 8 | for (;;);
9 | - for (p in obj);
9 | + for (p in obj){}
9 | + for (p in obj) {}
10 10 | for (x of xs);
11 11 | do;
12 12 | while (x);
Expand All @@ -141,7 +141,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
8 8 | for (;;);
9 9 | for (p in obj);
10 | - for (x of xs);
10 | + for (x of xs){}
10 | + for (x of xs) {}
11 11 | do;
12 12 | while (x);
13 13 | while (x);
Expand All @@ -163,7 +163,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
9 9 | for (p in obj);
10 10 | for (x of xs);
11 | - do;
11 | + do{}
11 | + do {}
12 12 | while (x);
13 13 | while (x);
14 14 | with (x);
Expand All @@ -184,7 +184,7 @@ Suggested fix: Wrap the statement with a `JsBlockStatement`
11 11 | do;
12 12 | while (x);
13 | - while (x);
13 | + while (x){}
13 | + while (x) {}
14 14 | with (x);
Expand Down
16 changes: 8 additions & 8 deletions website/src/docs/lint/rules/useBlockStatements.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ JavaScript allows the omission of curly braces when a block contains only one st
<span style="color: rgb(38, 148, 255);">Suggested fix</span><span style="color: rgb(38, 148, 255);">: </span><span style="color: rgb(38, 148, 255);">Wrap the statement with a `JsBlockStatement`</span>
| <span style="color: rgb(38, 148, 255);">@@ -1 +1 @@</span>
0 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> if (x) x;</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> if (x) {x;}</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> if (x) { x; }</span>

</code></pre>{% endraw %}

Expand All @@ -48,7 +48,7 @@ JavaScript allows the omission of curly braces when a block contains only one st
0 0 | if (x) {
1 1 | x;
2 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> } else y;</span>
2 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> } else {y;}</span>
2 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> } else { y; }</span>

</code></pre>{% endraw %}

Expand All @@ -69,7 +69,7 @@ if (x) {
0 0 | if (x) {
1 1 | x;
2 | <span style="color: Tomato;">- </span><span style="color: Tomato;">} else if (y) y;</span>
2 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;">} else if (y) {y;}</span>
2 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;">} else if (y) { y; }</span>

</code></pre>{% endraw %}

Expand All @@ -86,7 +86,7 @@ if (x) {
<span style="color: rgb(38, 148, 255);">Suggested fix</span><span style="color: rgb(38, 148, 255);">: </span><span style="color: rgb(38, 148, 255);">Wrap the statement with a `JsBlockStatement`</span>
| <span style="color: rgb(38, 148, 255);">@@ -1 +1 @@</span>
0 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> for (;;);</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> for (;;){}</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> for (;;) {}</span>

</code></pre>{% endraw %}

Expand All @@ -103,7 +103,7 @@ if (x) {
<span style="color: rgb(38, 148, 255);">Suggested fix</span><span style="color: rgb(38, 148, 255);">: </span><span style="color: rgb(38, 148, 255);">Wrap the statement with a `JsBlockStatement`</span>
| <span style="color: rgb(38, 148, 255);">@@ -1 +1 @@</span>
0 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> for (p in obj);</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> for (p in obj){}</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> for (p in obj) {}</span>

</code></pre>{% endraw %}

Expand All @@ -120,7 +120,7 @@ if (x) {
<span style="color: rgb(38, 148, 255);">Suggested fix</span><span style="color: rgb(38, 148, 255);">: </span><span style="color: rgb(38, 148, 255);">Wrap the statement with a `JsBlockStatement`</span>
| <span style="color: rgb(38, 148, 255);">@@ -1 +1 @@</span>
0 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> for (x of xs);</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> for (x of xs){}</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> for (x of xs) {}</span>

</code></pre>{% endraw %}

Expand All @@ -139,7 +139,7 @@ if (x) {
<span style="color: rgb(38, 148, 255);">Suggested fix</span><span style="color: rgb(38, 148, 255);">: </span><span style="color: rgb(38, 148, 255);">Wrap the statement with a `JsBlockStatement`</span>
| <span style="color: rgb(38, 148, 255);">@@ -1,2 +1,2 @@</span>
0 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> do;</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> do{}</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> do {}</span>
1 1 | while (x);

</code></pre>{% endraw %}
Expand All @@ -157,7 +157,7 @@ if (x) {
<span style="color: rgb(38, 148, 255);">Suggested fix</span><span style="color: rgb(38, 148, 255);">: </span><span style="color: rgb(38, 148, 255);">Wrap the statement with a `JsBlockStatement`</span>
| <span style="color: rgb(38, 148, 255);">@@ -1 +1 @@</span>
0 | <span style="color: Tomato;">- </span><span style="color: Tomato;"> while (x);</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> while (x){}</span>
0 | <span style="color: MediumSeaGreen;">+ </span><span style="color: MediumSeaGreen;"> while (x) {}</span>

</code></pre>{% endraw %}

Expand Down

0 comments on commit 65512e7

Please sign in to comment.