Skip to content

Commit ac8fcaf

Browse files
committed
fix(formatter): Add parens for new: private field expr (#16312)
Address https://github.com/microsoft/TypeScript/blob/669c25c091ad4d32298d0f33b0e4e681d46de3ea/tests/cases/conformance/classes/members/privateNames/privateNameMethodCallExpression.ts case in #15046 Added the same logic of `ComputedMemberExpression` to `PrivateFieldExpression`.
1 parent 82d784f commit ac8fcaf

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

crates/oxc_formatter/src/parentheses/expression.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ impl NeedsParentheses<'_> for AstNode<'_, StaticMemberExpression<'_>> {
270270
impl NeedsParentheses<'_> for AstNode<'_, PrivateFieldExpression<'_>> {
271271
#[inline]
272272
fn needs_parentheses(&self, _f: &Formatter<'_, '_>) -> bool {
273-
false
273+
self.is_new_callee() && (self.optional || member_chain_callee_needs_parens(&self.object))
274274
}
275275
}
276276

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
new (this.b().#c)()
2+
3+
new (this.b().c)()
4+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
source: crates/oxc_formatter/tests/fixtures/mod.rs
3+
---
4+
==================== Input ====================
5+
new (this.b().#c)()
6+
7+
new (this.b().c)()
8+
9+
10+
==================== Output ====================
11+
------------------
12+
{ printWidth: 80 }
13+
------------------
14+
new (this.b().#c)();
15+
16+
new (this.b().c)();
17+
18+
-------------------
19+
{ printWidth: 100 }
20+
-------------------
21+
new (this.b().#c)();
22+
23+
new (this.b().c)();
24+
25+
===================== End =====================

0 commit comments

Comments
 (0)