Skip to content

Conversation

@Dunqing
Copy link
Member

@Dunqing Dunqing commented Oct 13, 2025

Remove SiblingNode usages. It used to check comments for special nodes based on Prettier's behavior, but we have moved all of the logic to the comments printing side, so SiblingNode becomes unnecessary; it will be removed in the next PR.

@github-actions github-actions bot added A-formatter Area - Formatter C-cleanup Category - technical debt or refactoring. Solution not expected to change behavior labels Oct 13, 2025
This was referenced Oct 13, 2025
Copy link
Member Author

Dunqing commented Oct 13, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@codspeed-hq
Copy link

codspeed-hq bot commented Oct 13, 2025

CodSpeed Performance Report

Merging #14544 will not alter performance

Comparing 09-11-refactor_formatter_improve_printing_comments_for_special_nodes (893bdac) with main (2cd53c5)1

Summary

✅ 33 untouched
⏩ 4 skipped2

Footnotes

  1. No successful run was found on main (0829d2c) during the generation of this report, so 2cd53c5 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

  2. 4 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@graphite-app graphite-app bot changed the base branch from 10-13-fix_formatter_correct_printing_comments_that_are_around_the_staticmemberexpression to graphite-base/14544 October 13, 2025 06:34
@graphite-app graphite-app bot force-pushed the 09-11-refactor_formatter_improve_printing_comments_for_special_nodes branch from e347966 to 997b2eb Compare October 13, 2025 06:40
@graphite-app graphite-app bot force-pushed the graphite-base/14544 branch from 191b50b to 5db9774 Compare October 13, 2025 06:40
@graphite-app graphite-app bot changed the base branch from graphite-base/14544 to main October 13, 2025 06:40
@graphite-app graphite-app bot force-pushed the 09-11-refactor_formatter_improve_printing_comments_for_special_nodes branch from 997b2eb to afe0be2 Compare October 13, 2025 06:41
@Dunqing Dunqing force-pushed the 09-11-refactor_formatter_improve_printing_comments_for_special_nodes branch from afe0be2 to 18f6334 Compare October 13, 2025 08:05
@Dunqing Dunqing marked this pull request as ready for review October 14, 2025 01:59
Copilot AI review requested due to automatic review settings October 14, 2025 01:59
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors comment handling in the formatter by removing SiblingNode usages and moving comment processing logic to dedicated formatting methods. The changes improve how comments are handled for special nodes like control structures, call expressions, and import/export statements.

  • Removes SiblingNode-based comment handling from the Comments struct
  • Introduces specialized comment formatting for empty statements in control structures
  • Consolidates import/export source formatting with proper comment handling

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tasks/prettier_conformance/snapshots/prettier.ts.snap.md Updates test compatibility percentage for TypeScript definite assignment
crates/oxc_formatter/src/write/utils/statement_body.rs Adds special handling for trailing comments in if statement consequents
crates/oxc_formatter/src/write/mod.rs Implements comment formatting for empty statements and control structure tests
crates/oxc_formatter/src/write/import_declaration.rs Extracts shared logic for formatting import/export sources with clauses
crates/oxc_formatter/src/write/export_declarations.rs Uses shared formatting function for export sources with proper comment handling
crates/oxc_formatter/src/utils/member_chain/chain_member.rs Adds conditional trailing comment formatting for member expressions
crates/oxc_formatter/src/utils/assignment_like.rs Implements trailing comment handling for assignment-like expressions
crates/oxc_formatter/src/formatter/comments.rs Removes SiblingNode-based comment logic and simplifies comment detection

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@Dunqing Dunqing force-pushed the 09-11-refactor_formatter_improve_printing_comments_for_special_nodes branch 2 times, most recently from 85ce0af to f6a70a2 Compare October 14, 2025 02:32
@graphite-app graphite-app bot added the 0-merge Merge with Graphite Merge Queue label Oct 14, 2025
@graphite-app
Copy link
Contributor

graphite-app bot commented Oct 14, 2025

Merge activity

)

Remove `SiblingNode` usages. It used to check comments for special nodes based on [Prettier's](https://github.com/prettier/prettier/blob/7584432401a47a26943dd7a9ca9a8e032ead7285/src/language-js/comments/handle-comments.js#L861) behavior, but we have moved all of the logic to the comments printing side, so `SiblingNode` becomes unnecessary; it will be removed in the next PR.
@graphite-app graphite-app bot force-pushed the 09-11-refactor_formatter_improve_printing_comments_for_special_nodes branch from f6a70a2 to 893bdac Compare October 14, 2025 05:59
graphite-app bot pushed a commit that referenced this pull request Oct 14, 2025
Remove `SiblingNode`; all of the last usages are removed in #14544.
@graphite-app graphite-app bot merged commit 893bdac into main Oct 14, 2025
27 checks passed
@graphite-app graphite-app bot deleted the 09-11-refactor_formatter_improve_printing_comments_for_special_nodes branch October 14, 2025 06:05
@graphite-app graphite-app bot removed the 0-merge Merge with Graphite Merge Queue label Oct 14, 2025
@Boshen Boshen mentioned this pull request Oct 14, 2025
leaysgur added a commit that referenced this pull request Oct 14, 2025
## [0.5.0] - 2025-10-14

### 🚀 Features

- 8077f9b oxfmt: Provide JSON schema for `.oxfmtrc.json` (#14399)
(leaysgur)
- 51ddfa8 oxfmt: Support `.oxfmtrc.json(c)` config file (#14398)
(leaysgur)

### 🐛 Bug Fixes

- c4e12df formatter: Correct checking comments around the return
argument (#14585) (Dunqing)
- 454303b formatter: Check empty lines between arguments incorrectly
(#14584) (Dunqing)
- a5554a8 formatter: Print a line break incorrectly for directives
(#14577) (Dunqing)
- 5db9774 formatter: Correct printing comments that are around the
`StaticMemberExpression` (#14543) (Dunqing)
- 620dbac formatter: No need to wrap a parenthesis for
`TSConditionalType` and `TSFunctionType` when its parent is
`TSUnionType` and it only has one element (#14540) (Dunqing)
- 1aec74f formatter: Missing parenthesis for `ComputedMemberExpression`
when its parent is an `NewExpression` (#14530) (Dunqing)
- 59f1d8f formatter: Missing parenthesis for `PrivateInExpression` when
its parent is an `UnaryExpression` (#14529) (Dunqing)
- b06059e formatter: Correct printing comments for logical expression
(#14500) (Dunqing)
- be38095 formatter: Should break even if the right side of the
assignment is a require when it has a leading own line comment (#14499)
(Dunqing)
- 4d55654 formatter: Correct printing comments for the end of union type
(#14498) (Dunqing)
- 4994872 formatter: Correct printing comments for `try` statement
(#14497) (Dunqing)
- 9a4da3d formatter: Should expand the parent if the member chain will
break (#14487) (Dunqing)
- bba9689 formatter: Correct printing comments around the expression of
`ComputedMemberExpression` (#14486) (Dunqing)
- dc5e08a formatter: Correct printing yield argument (#14485) (Dunqing)
- b8a0905 formatter: No need to wrap with parentheses for a type cast
node (#14484) (Dunqing)
- b159215 formatter: Ignore the leading line break for the first
argument of the call expression (#14483) (Dunqing)
- ea8f9ed formatter: Correct checking comments between the operator and
the right side for assignment like nodes (#14482) (Dunqing)
- 4f19504 formatter: Block comments without a leading linebreak that are
around the operator of the conditional expression should be printed
as-is (#14474) (Dunqing)
- ef77997 formatter: Correct printing comments for `for` statements
(#14473) (Dunqing)
- 31595c3 formatter: Correct printing comments for assignment pattern
(#14469) (Dunqing)
- 0f19be0 oxfmt: Normalize path delimiter on Windows (#14463) (leaysgur)
- 5856bc9 oxc_formatter: Fix arrow_parentheses: 'avoid' > 'as-needed'
(#14462) (leaysgur)

### 🚜 Refactor

- 7bc86f4 formatter: Simplify foramtting import and export (#14576)
(Dunqing)
- 29c3cf2 formatter: Remove `SiblingNode` (#14551) (Dunqing)
- 893bdac formatter: Improve printing comments for special nodes
(#14544) (Dunqing)
- 97bb964 formatter: Improve line break detaching logic in SourceText
(#14539) (Dunqing)

### 🧪 Testing

- bb43dc5 formatter: Add snapshot-based test infrastructure (#14400)
(Dunqing)

Co-authored-by: leaysgur <6259812+leaysgur@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-formatter Area - Formatter C-cleanup Category - technical debt or refactoring. Solution not expected to change behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants