@@ -3,13 +3,9 @@ use std::error::Error;
33use 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