Skip to content

Commit 1aec74f

Browse files
committed
fix(formatter): missing parenthesis for ComputedMemberExpression when its parent is an NewExpression (#14530)
* close #14453
1 parent 59f1d8f commit 1aec74f

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

crates/oxc_formatter/src/parentheses/expression.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,8 @@ impl<'a> NeedsParentheses<'a> for AstNode<'a, MemberExpression<'a>> {
249249

250250
impl<'a> NeedsParentheses<'a> for AstNode<'a, ComputedMemberExpression<'a>> {
251251
fn needs_parentheses(&self, f: &Formatter<'_, 'a>) -> bool {
252-
false
252+
matches!(self.parent, AstNodes::NewExpression(_))
253+
&& (!self.optional || member_chain_callee_needs_parens(&self.expression))
253254
}
254255
}
255256

@@ -797,7 +798,7 @@ impl<'a> NeedsParentheses<'a> for AstNode<'a, TSNonNullExpression<'a>> {
797798
let parent = self.parent;
798799
is_class_extends(self.span, parent)
799800
|| (matches!(parent, AstNodes::NewExpression(_))
800-
&& member_chain_callee_needs_parens(self.expression()))
801+
&& member_chain_callee_needs_parens(&self.expression))
801802
}
802803
}
803804

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
new (get(win))[ty](xxx);
2+
new (get(win))[ty][ty](xxx);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
source: crates/oxc_formatter/tests/fixtures/mod.rs
3+
---
4+
==================== Input ====================
5+
new (get(win))[ty](xxx);
6+
new (get(win))[ty][ty](xxx);
7+
8+
==================== Output ====================
9+
new (get(win)[ty])(xxx);
10+
new (get(win)[ty][ty])(xxx);
11+
12+
===================== End =====================

0 commit comments

Comments
 (0)