diff --git a/.changeset/fix-lone-block-comments.md b/.changeset/fix-lone-block-comments.md new file mode 100644 index 000000000000..57f2637ef1c3 --- /dev/null +++ b/.changeset/fix-lone-block-comments.md @@ -0,0 +1,5 @@ +--- +"@biomejs/biome": patch +--- + +Fixed [#8685](https://github.com/biomejs/biome/issues/8685) where `noUselessLoneBlockStatements` would remove empty blocks containing comments. The rule now preserves these blocks since comments may contain important information like TODOs or commented-out code. diff --git a/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs b/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs index bd39d066b4b6..e4687b5227f4 100644 --- a/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs +++ b/crates/biome_js_analyze/src/lint/complexity/no_useless_lone_block_statements.rs @@ -77,6 +77,10 @@ impl Rule for NoUselessLoneBlockStatements { } if block.statements().is_empty() { + // Preserve empty blocks that contain comments + if block.syntax().has_comments_descendants() { + return None; + } return Some(()); } diff --git a/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs b/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs index 81015c2b59a1..774486a2a488 100644 --- a/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs +++ b/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs @@ -84,3 +84,21 @@ switch (foo) { break; } } + +// Empty blocks with comments should not trigger diagnostics +{ + // TODO: add error handling +} + +{ + /* + * Multi-line block comment + * should also be preserved + */ +} + +function withCommentedCode() { + { + // return x + y; + } +} diff --git a/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs.snap b/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs.snap index 00494d0bfccd..c5c4cafef4bd 100644 --- a/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs.snap +++ b/crates/biome_js_analyze/tests/specs/complexity/noUselessLoneBlockStatements/valid.cjs.snap @@ -91,4 +91,22 @@ switch (foo) { } } +// Empty blocks with comments should not trigger diagnostics +{ + // TODO: add error handling +} + +{ + /* + * Multi-line block comment + * should also be preserved + */ +} + +function withCommentedCode() { + { + // return x + y; + } +} + ```