Skip to content

Commit 0403e43

Browse files
committed
refactor(minifier): clean up has_no_side_effect_for_evaluation_same_target
1 parent 3fa87ff commit 0403e43

File tree

1 file changed

+16
-26
lines changed

1 file changed

+16
-26
lines changed

crates/oxc_minifier/src/peephole/minimize_conditions.rs

+16-26
Original file line numberDiff line numberDiff line change
@@ -1075,24 +1075,20 @@ impl<'a> PeepholeOptimizations {
10751075
if self.target < ESTarget::ES2020 {
10761076
return None;
10771077
}
1078-
10791078
let Expression::AssignmentExpression(assignment_expr) = &mut expr.right else {
10801079
return None;
10811080
};
10821081
if assignment_expr.operator != AssignmentOperator::Assign {
10831082
return None;
10841083
}
1085-
10861084
let new_op = expr.operator.to_assignment_operator();
1087-
10881085
if !Self::has_no_side_effect_for_evaluation_same_target(
10891086
&assignment_expr.left,
10901087
&expr.left,
10911088
ctx,
10921089
) {
10931090
return None;
10941091
}
1095-
10961092
assignment_expr.span = expr.span;
10971093
assignment_expr.operator = new_op;
10981094
Some(ctx.ast.move_expression(&mut expr.right))
@@ -1129,37 +1125,31 @@ impl<'a> PeepholeOptimizations {
11291125
///
11301126
/// - `a`, `a`
11311127
/// - `a.b`, `a.b`
1132-
/// - `a.#b`, `a.#b`
1128+
/// - `a["b"]`, `a["b"]`
11331129
fn has_no_side_effect_for_evaluation_same_target(
11341130
assignment_target: &AssignmentTarget,
11351131
expr: &Expression,
11361132
ctx: &mut TraverseCtx<'a>,
11371133
) -> bool {
1138-
match (&assignment_target, &expr) {
1139-
(
1140-
AssignmentTarget::AssignmentTargetIdentifier(write_id_ref),
1141-
Expression::Identifier(read_id_ref),
1142-
) => write_id_ref.name == read_id_ref.name,
1143-
(
1144-
AssignmentTarget::StaticMemberExpression(_),
1145-
Expression::StaticMemberExpression(_),
1146-
)
1147-
| (
1148-
AssignmentTarget::PrivateFieldExpression(_),
1149-
Expression::PrivateFieldExpression(_),
1150-
) => {
1151-
let write_expr = assignment_target.to_member_expression();
1152-
let read_expr = expr.to_member_expression();
1153-
let Expression::Identifier(write_expr_object_id) = &write_expr.object() else {
1154-
return false;
1155-
};
1134+
if let (
1135+
AssignmentTarget::AssignmentTargetIdentifier(write_id_ref),
1136+
Expression::Identifier(read_id_ref),
1137+
) = (assignment_target, expr)
1138+
{
1139+
return write_id_ref.name == read_id_ref.name;
1140+
}
1141+
if let Some(write_expr) = assignment_target.as_member_expression() {
1142+
let Expression::Identifier(write_expr_object_id) = &write_expr.object() else {
1143+
return false;
1144+
};
1145+
if let Some(read_expr) = expr.as_member_expression() {
11561146
// It should also return false when the reference might refer to a reference value created by a with statement
11571147
// when the minifier supports with statements
1158-
!Ctx(ctx).is_global_reference(write_expr_object_id)
1159-
&& write_expr.content_eq(read_expr)
1148+
return !Ctx(ctx).is_global_reference(write_expr_object_id)
1149+
&& write_expr.content_eq(read_expr);
11601150
}
1161-
_ => false,
11621151
}
1152+
false
11631153
}
11641154

11651155
/// Compress `a = a + b` to `a += b`

0 commit comments

Comments
 (0)