fix(codegen): remove unnecessary double parentheses from satisfies expressions#17986
fix(codegen): remove unnecessary double parentheses from satisfies expressions#17986graphite-app[bot] merged 1 commit intomainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes unnecessary double parentheses in the code generation for TypeScript satisfies expressions. The implementation previously always wrapped satisfies expressions with double parentheses (e.g., ((x) satisfies y)), which was incorrect and inconsistent with how as expressions are handled.
Changes:
- Refactored
TSSatisfiesExpressioncode generation to only add parentheses when precedence requires it - Aligned implementation with the existing
TSAsExpressionpattern - Added comprehensive idempotency tests covering 9 different scenarios
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
crates/oxc_codegen/src/gen.rs |
Refactored TSSatisfiesExpression::gen_expr to use precedence-based wrapping logic matching TSAsExpression, removing unconditional double parentheses |
crates/oxc_codegen/tests/integration/ts.rs |
Added 9 idempotency test cases covering various precedence scenarios (member access, calls, logical operators, equality) |
crates/oxc_codegen/tests/integration/snapshots/ts.snap |
Updated snapshot showing removal of unnecessary parentheses from ((x) satisfies y) to x satisfies y |
crates/oxc_codegen/tests/integration/snapshots/pure_comments.snap |
Updated snapshots showing correct handling of satisfies expressions with pure comments |
crates/oxc_codegen/tests/integration/snapshots/minify.snap |
Updated minified output snapshot reflecting the parentheses fix |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Merge activity
|
CodSpeed Performance ReportMerging this PR will not alter performanceComparing Summary
Footnotes
|
…pressions (#17986) ## Summary - Fixed `TSSatisfiesExpression` to only add parentheses when precedence requires it - Before: `((x) satisfies y)`, After: `x satisfies y` - Aligned implementation with `TSAsExpression` pattern - Added idempotency tests to ensure semantic correctness ## Test plan - [x] Added `ts_satisfies_expression` test with 9 idempotency test cases - [x] All codegen tests pass - [x] Clippy passes 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1e24a21 to
06bd17b
Compare
Summary
TSSatisfiesExpressionto only add parentheses when precedence requires it((x) satisfies y), After:x satisfies yTSAsExpressionpatternTest plan
ts_satisfies_expressiontest with 9 idempotency test cases🤖 Generated with Claude Code