From dcdcf12bebe5410f157dd35fd90ee49165b0adb0 Mon Sep 17 00:00:00 2001 From: Boshen <1430279+Boshen@users.noreply.github.com> Date: Fri, 23 May 2025 15:38:42 +0000 Subject: [PATCH] fix(parser): parse `new (import("x"))` with `preserveParens: false` (#11251) fixes #11183 No unit tests added, I will enable `preserveParens: false` in the conformance test in the near future. --- crates/oxc_parser/src/js/expression.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/oxc_parser/src/js/expression.rs b/crates/oxc_parser/src/js/expression.rs index 7b9ee752dc6ef..7a25757d810c8 100644 --- a/crates/oxc_parser/src/js/expression.rs +++ b/crates/oxc_parser/src/js/expression.rs @@ -849,6 +849,7 @@ impl<'a> ParserImpl<'a> { } let rhs_span = self.start_span(); + let is_import = self.at(Kind::Import); // Syntax Error for `new import('mod')` but not `new (import('mod'))`. let mut optional = false; let mut callee = { let lhs = self.parse_primary_expression(); @@ -890,7 +891,7 @@ impl<'a> ParserImpl<'a> { self.ast.vec() }; - if matches!(callee, Expression::ImportExpression(_)) { + if is_import && matches!(callee, Expression::ImportExpression(_)) { self.error(diagnostics::new_dynamic_import(self.end_span(rhs_span))); }