LibJS: Box ExpressionKind::New variant

This commit is contained in:
Johan Dahlin 2026-03-22 17:31:15 +01:00 committed by Andreas Kling
parent d2a5c1260d
commit 0a1bf8079c
2 changed files with 6 additions and 12 deletions

View file

@ -340,13 +340,7 @@ impl FunctionTable {
}
}
}
ExpressionKind::Call(data) => {
self.collect_from_expression(&data.callee, result);
for arg in &data.arguments {
self.collect_from_expression(&arg.value, result);
}
}
ExpressionKind::New(data) => {
ExpressionKind::Call(data) | ExpressionKind::New(data) => {
self.collect_from_expression(&data.callee, result);
for arg in &data.arguments {
self.collect_from_expression(&arg.value, result);
@ -1384,7 +1378,7 @@ pub enum ExpressionKind {
// Calls
Call(Box<CallExpressionData>),
New(CallExpressionData),
New(Box<CallExpressionData>),
SuperCall(SuperCallData),
// Spread

View file

@ -1265,23 +1265,23 @@ impl Parser<'_> {
let arguments = self.parse_arguments();
self.expression(
start,
ExpressionKind::New(CallExpressionData {
ExpressionKind::New(Box::new(CallExpressionData {
callee: Box::new(callee),
arguments,
// Mirrors C++ InvocationStyle::Parenthesized for `new Foo(...)`.
is_parenthesized: true,
is_inside_parens: false,
}),
})),
)
} else {
self.expression(
start,
ExpressionKind::New(CallExpressionData {
ExpressionKind::New(Box::new(CallExpressionData {
callee: Box::new(callee),
arguments: Vec::new(),
is_parenthesized: false,
is_inside_parens: false,
}),
})),
)
}
}