Skip to content

Commit 19ad307

Browse files
committed
[core][rewriter] dpsc: fix eval rewrite
1 parent d7ac6ec commit 19ad307

File tree

2 files changed

+44
-34
lines changed

2 files changed

+44
-34
lines changed

rewriter/js/src/rewrite.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ impl<'alloc: 'data, 'data> RewriteType<'alloc, 'data> {
129129
)
130130
],
131131
Self::Eval { inner } => smallvec![
132-
change!(span!(span inner start), EvalRewriteFn),
132+
change!(Span::new(inner.start, inner.start), EvalRewriteFn),
133133
change!(
134-
span!(inner span end),
134+
Span::new(inner.end, inner.end),
135135
ClosingParen {
136136
semi: false,
137137
replace: false,

rewriter/js/src/visitor.rs

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,9 @@ use std::error::Error;
33
use oxc::{
44
allocator::{Allocator, StringBuilder},
55
ast::ast::{
6-
AssignmentExpression, AssignmentTarget, CallExpression, DebuggerStatement,
7-
ExportAllDeclaration, ExportNamedDeclaration, Expression, FunctionBody,
8-
IdentifierReference, ImportDeclaration, ImportExpression, MemberExpression, MetaProperty,
9-
NewExpression, ObjectExpression, ObjectPropertyKind, ReturnStatement, StringLiteral,
10-
ThisExpression, UnaryExpression, UnaryOperator, UpdateExpression,
6+
AssignmentExpression, AssignmentTarget, CallExpression, ComputedMemberExpression, DebuggerStatement, ExportAllDeclaration, ExportNamedDeclaration, Expression, FunctionBody, IdentifierReference, ImportDeclaration, ImportExpression, MemberExpression, MetaProperty, NewExpression, ObjectExpression, ObjectPropertyKind, ReturnStatement, StringLiteral, ThisExpression, UnaryExpression, UnaryOperator, UpdateExpression
117
},
12-
ast_visit::{Visit, walk},
8+
ast_visit::{walk, Visit},
139
span::{Atom, GetSpan, Span},
1410
};
1511

@@ -64,23 +60,42 @@ where
6460
}
6561
}
6662

67-
fn walk_member_expression(&mut self, it: &Expression) -> bool {
68-
match it {
69-
Expression::Identifier(s) => false,
70-
Expression::StaticMemberExpression(s) => {
71-
if UNSAFE_GLOBALS.contains(&s.property.name.as_str()) {
72-
// self.jschanges.add(rewrite!(s.span, WrapAccess {
73-
// ident: s.property.name,
74-
// propspan: s.property.span,
75-
// }
76-
// ));
77-
}
78-
self.walk_member_expression(&s.object)
79-
}
80-
Expression::ComputedMemberExpression(s) => self.walk_member_expression(&s.object),
81-
_ => false,
82-
}
83-
}
63+
// fn walk_member_expression(&mut self, it: &Expression) -> bool {
64+
// match it {
65+
// Expression::Identifier(s) => false,
66+
// Expression::StaticMemberExpression(s) => {
67+
// if UNSAFE_GLOBALS.contains(&s.property.name.as_str()) {
68+
// // self.jschanges.add(rewrite!(s.span, WrapAccess {
69+
// // ident: s.property.name,
70+
// // propspan: s.property.span,
71+
// // }
72+
// // ));
73+
// }
74+
// self.walk_member_expression(&s.object)
75+
// }
76+
// Expression::ComputedMemberExpression(s) => self.walk_member_expression(&s.object),
77+
// _ => false,
78+
// }
79+
// }
80+
fn walk_computed_member_expression(&mut self, it: &ComputedMemberExpression<'data>) {
81+
match &it.expression{
82+
Expression::NullLiteral(_) | Expression::BigIntLiteral(_) | Expression::NumericLiteral(_) | Expression::RegExpLiteral(_) | Expression::BooleanLiteral(_) => {},
83+
Expression::StringLiteral(lit) =>{
84+
if UNSAFE_GLOBALS.contains(&lit.value.as_str()) {
85+
self.jschanges.add(rewrite!(
86+
it.expression.span(),
87+
WrapProperty,
88+
));
89+
}
90+
},
91+
_=> {
92+
self.jschanges.add(rewrite!(
93+
it.expression.span(),
94+
WrapProperty,
95+
));
96+
}
97+
}
98+
}
8499

85100
fn scramitize(&mut self, span: Span) {
86101
self.jschanges.add(rewrite!(span, Scramitize));
@@ -110,7 +125,8 @@ where
110125
}
111126

112127
fn visit_new_expression(&mut self, it: &NewExpression<'data>) {
113-
self.walk_member_expression(&it.callee);
128+
// ??
129+
// self.walk_member_expression(&it.callee);
114130
walk::walk_arguments(self, &it.arguments);
115131
}
116132

@@ -136,10 +152,7 @@ where
136152
}
137153
}
138154
MemberExpression::ComputedMemberExpression(s) => {
139-
self.jschanges.add(rewrite!(
140-
s.expression.span(),
141-
WrapProperty,
142-
));
155+
self.walk_computed_member_expression(s);
143156
}
144157
_ => {} // if !self.flags.strict_rewrites
145158
// && !UNSAFE_GLOBALS.contains(&s.property.name.as_str())
@@ -318,10 +331,7 @@ where
318331
walk::walk_expression(self, &s.object);
319332
}
320333
AssignmentTarget::ComputedMemberExpression(s) => {
321-
self.jschanges.add(rewrite!(
322-
s.expression.span(),
323-
WrapProperty,
324-
));
334+
self.walk_computed_member_expression(s);
325335
walk::walk_expression(self, &s.object);
326336
walk::walk_expression(self, &s.expression);
327337
}

0 commit comments

Comments
 (0)