mirror of
https://github.com/danbulant/oxc
synced 2026-05-25 12:51:57 +00:00
fix(transformer/nullish-coalescing): correct span (#7269)
Transformed expression inherit same `Span` as the input.
This commit is contained in:
parent
e219ae8c94
commit
5b5c8a9bdb
1 changed files with 10 additions and 3 deletions
|
|
@ -67,6 +67,7 @@ impl<'a, 'ctx> Traverse<'a> for NullishCoalescingOperator<'a, 'ctx> {
|
||||||
Self::clone_expression(&logical_expr.left, ctx),
|
Self::clone_expression(&logical_expr.left, ctx),
|
||||||
logical_expr.left,
|
logical_expr.left,
|
||||||
logical_expr.right,
|
logical_expr.right,
|
||||||
|
logical_expr.span,
|
||||||
ctx,
|
ctx,
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
|
|
@ -98,8 +99,13 @@ impl<'a, 'ctx> Traverse<'a> for NullishCoalescingOperator<'a, 'ctx> {
|
||||||
binding.create_read_write_target(ctx),
|
binding.create_read_write_target(ctx),
|
||||||
logical_expr.left,
|
logical_expr.left,
|
||||||
);
|
);
|
||||||
let mut new_expr =
|
let mut new_expr = Self::create_conditional_expression(
|
||||||
Self::create_conditional_expression(reference, assignment, logical_expr.right, ctx);
|
reference,
|
||||||
|
assignment,
|
||||||
|
logical_expr.right,
|
||||||
|
logical_expr.span,
|
||||||
|
ctx,
|
||||||
|
);
|
||||||
|
|
||||||
if is_parent_formal_parameter {
|
if is_parent_formal_parameter {
|
||||||
// Replace `function (a, x = a.b ?? c) {}` to `function (a, x = (() => a.b ?? c)() ){}`
|
// Replace `function (a, x = a.b ?? c) {}` to `function (a, x = (() => a.b ?? c)() ){}`
|
||||||
|
|
@ -173,6 +179,7 @@ impl<'a, 'ctx> NullishCoalescingOperator<'a, 'ctx> {
|
||||||
reference: Expression<'a>,
|
reference: Expression<'a>,
|
||||||
assignment: Expression<'a>,
|
assignment: Expression<'a>,
|
||||||
default: Expression<'a>,
|
default: Expression<'a>,
|
||||||
|
span: Span,
|
||||||
ctx: &mut TraverseCtx<'a>,
|
ctx: &mut TraverseCtx<'a>,
|
||||||
) -> Expression<'a> {
|
) -> Expression<'a> {
|
||||||
let op = BinaryOperator::StrictInequality;
|
let op = BinaryOperator::StrictInequality;
|
||||||
|
|
@ -186,6 +193,6 @@ impl<'a, 'ctx> NullishCoalescingOperator<'a, 'ctx> {
|
||||||
);
|
);
|
||||||
let test = ctx.ast.expression_logical(SPAN, left, LogicalOperator::And, right);
|
let test = ctx.ast.expression_logical(SPAN, left, LogicalOperator::And, right);
|
||||||
|
|
||||||
ctx.ast.expression_conditional(SPAN, test, reference, default)
|
ctx.ast.expression_conditional(span, test, reference, default)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue