diff --git a/crates/oxc_prettier/src/needs_parens.rs b/crates/oxc_prettier/src/needs_parens.rs index 6aaf80fb6..7fbf46aed 100644 --- a/crates/oxc_prettier/src/needs_parens.rs +++ b/crates/oxc_prettier/src/needs_parens.rs @@ -70,7 +70,15 @@ impl<'a> Prettier<'a> { _ => false, } } - AstKind::Class(c) if c.is_expression() => self.check_object_function_class(c.span), + AstKind::Class(c) if c.is_expression() => { + if self.check_object_function_class(c.span) { + return true; + } + if let AstKind::NewExpression(new_expr) = parent_kind { + return new_expr.callee.span() == c.span; + } + false + } AstKind::AssignmentExpression(assign_expr) => match parent_kind { AstKind::ArrowExpression(arrow_expr) if arrow_expr diff --git a/tasks/prettier_conformance/prettier.snap.md b/tasks/prettier_conformance/prettier.snap.md index f4add2de7..2f44845eb 100644 --- a/tasks/prettier_conformance/prettier.snap.md +++ b/tasks/prettier_conformance/prettier.snap.md @@ -1,4 +1,4 @@ -Compatibility: 215/561 (38.32%) +Compatibility: 216/561 (38.50%) # Failed @@ -114,7 +114,6 @@ Compatibility: 215/561 (38.32%) * classes/assignment.js * classes/empty.js * classes/method.js -* classes/new.js * classes/property.js ### classes-private-fields